首页 > 解决方案 > Android Studio Webview 登录缓存

问题描述

我的 webview 应用程序打开了一个我需要登录的网站。但如果我登录并销毁应用程序,我需要再次登录。我想缓存登录数据,并且在我注销之前不需要再次登录。我怎样才能让 webview 应用程序像持有缓存一样?如果用户不注销,应用程序必须保持登录状态。感谢您的帮助,这是我的代码:

 WebView webid;
String newString;
ImageView loading;
AnimationDrawable animation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webid = (WebView) findViewById(R.id.webid);




    loading = (ImageView)findViewById(R.id.loader);
    animation = (AnimationDrawable) loading.getDrawable();
    WebSettings webSettings = webid.getSettings();
    webSettings.setJavaScriptEnabled(true);
    
    webid.loadUrl("https://ios.mavicell.com");
    webid.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            loading.setVisibility(View.VISIBLE);
            animation.start();
        }

        @Override
        public void onPageCommitVisible(WebView view, String url) {
            super.onPageCommitVisible(view,url);
            loading.setVisibility(View.INVISIBLE);
            animation.stop();


        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            loading.setVisibility(View.INVISIBLE);
            animation.stop();


        }
    });


    if (savedInstanceState == null) {
        Bundle extras = getIntent().getExtras();
        if(extras == null) {
            newString= null;
        } else {
            newString= extras.getString("urlayar");
        }
    } else {
        newString= (String) savedInstanceState.getSerializable("urlayar");
    }




    if (newString != null) {





        webid.loadUrl(newString);
        webid.getSettings().setJavaScriptEnabled(true);
        webid.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                loading.setVisibility(View.VISIBLE);
                animation.start();
            }

            @Override
            public void onPageCommitVisible(WebView view, String url) {
                super.onPageCommitVisible(view,url);
                loading.setVisibility(View.INVISIBLE);
                animation.stop();


            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                loading.setVisibility(View.INVISIBLE);
                animation.stop();


            }
        });



    }
    else {

    }



    // Logging set to help debug issues, remove before releasing your app.
    OneSignal.setLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.NONE);

    // OneSignal Initialization
    OneSignal.startInit(this)
            .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
            .unsubscribeWhenNotificationsAreDisabled(true)
            .init();





}

@Override
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event){
    if(event.getAction() == KeyEvent.ACTION_DOWN){
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Mavicell");
            builder.setMessage("Çıkmak istediğinize emin misiniz?");
            builder.setNegativeButton("Hayır", null);
            builder.setPositiveButton("Evet", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    finish();

                }
            });
            builder.show();



            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

标签: androidwebview

解决方案


下面这行应该做你的工作

webSettings.setCacheMode(WebSettings.LOAD_DEFAULT)

推荐阅读