【问题标题】:Android Webview signout issueAndroid Webview 注销问题
【发布时间】:2018-03-17 17:24:00
【问题描述】:

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

请帮忙!!

这是一个sn-p的代码:

  @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);
}

【问题讨论】:

标签: android-webview


【解决方案1】:

在loadUrl()之前运行下面的代码

WebStorage webStorage = WebStorage.getInstance();
webStorage.deleteAllData();
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

我使用 Gmail 帐户对其进行测试

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2011-01-05
    • 2012-02-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多