Android Webview注销问题

时间:2018-02-11 05:21:27

标签: android-webview

在我的webview应用程序中,当我第一次运行应用程序并从用户会话中注销时,关闭应用程序,然后当我再次打开应用程序而不是询问用户凭据时,我发现自己已经登录。我尝试清除但是它总是需要在每次重启时登录。我只希望它在用户从应用程序注销时要求登录。

请帮助!!

以下是代码片段:

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    frameLayout = (FrameLayout) findViewById(R.id.framelayout);
    bar = (ProgressBar) findViewById(R.id.progressBar2);
    bar.setMax(100);
    webview = (WebView) findViewById(R.id.mywebview);
    webview.clearCache(true);
    webview.clearHistory();
    WebSettings mWebSettings = webview.getSettings();
    mWebSettings.setSaveFormData(false);




    swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
    swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            LoadWeb();
        }
    });

   LoadWeb();

}

public  void LoadWeb(){

    webview = (WebView) findViewById(R.id.mywebview);

    webview.setWebViewClient(new HelpClient());




    webview.setWebChromeClient(new WebChromeClient(){




        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            frameLayout.setVisibility(View.VISIBLE);
            bar.setProgress(newProgress);

            setTitle("Loading....");

            if (newProgress == 100){
                frameLayout.setVisibility(View.GONE);
                setTitle(view.getTitle());
            }
            super.onProgressChanged(view, newProgress);
        }
    });
    webview.getSettings().setJavaScriptEnabled(true);

    webview.setVerticalScrollBarEnabled(false);
    webview.loadUrl(WebAddress);
    webview.loadUrl("javascript:window.location.reload(true)");

    swipe.setRefreshing(false);
    bar.setProgress(0);


}


private class HelpClient extends WebViewClient{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        frameLayout.setVisibility(view.VISIBLE);
        return true;
    }



    @Override
    public void onPageFinished(WebView view, String url) {

        swipe.setRefreshing(false);
    }


    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {

        try {
            webview.stopLoading();
        } catch (Exception e) {

        }

        if (webview.canGoBack()) {
            webview.goBack();
        }

        webview.loadUrl("about:blank");
        AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
        alertDialog.setTitle("Error");
        alertDialog.setMessage("Check your internet connection and try again.");
        alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Try Again", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                finish();
                startActivity(getIntent());
            }
        });

        alertDialog.show();

        super.onReceivedError(view, request, error);

    }


}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK){
        if (webview.canGoBack()){
            webview.goBack();
            return true;
        }
    }


    return super.onKeyDown(keyCode, event);
}

1 个答案:

答案 0 :(得分:0)

loadUrl()

之前运行以下代码
WebStorage webStorage = WebStorage.getInstance();
webStorage.deleteAllData();
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

我使用Gmail帐户进行测试