如何允许WebView持续控制登录状态而不丢失登录凭据?

时间:2018-12-09 22:20:56

标签: java android android-webview

我正在创建我的第一个android应用程序,我以为我已经完成了它,但是最近发现用户似乎是随机注销的。

我正在使用WebView加载URL,并且我唯一一次在WebView中操作shouldOverrideUrlLoading的时候是WebViewClient,以便检查外部链接。这是要点:

@Override
public boolean shouldOverrideUrlLoading(WebView webview, WebResourceRequest request) {
    String RequestUrl = request.getUrl().toString();
    if(request.getUrl().getHost() != null) {
         changePage(RequestUrl);
    }
    return true;
}

public void changePage(String UrlString){
    Uri RequestUri = Uri.parse(UrlString);

    if(RequestUri.getHost() != null) {
        if ((UrlString.contains("http://") || UrlString.contains("https://")) && RequestUri.getHost().equals(getString(R.string.app_domain))) {
            webview.loadUrl(UrlString);
        } else {
            Intent intent = new Intent(Intent.ACTION_VIEW, RequestUri);
            webview.getContext().startActivity(intent);
        }
    }
}

不应引起问题。

我还使用网站的登录页面允许用户访问,目的是允许网页管理登录/注销状态。

我的问题不是用户无法登录,也不是他们无法通过该应用程序浏览网站,而是在浏览WebView /网站一段时间后,将丢失提供的身份验证通过初始登录,有效注销用户。 (我所指的所有导航都是应用程序内/内部网站链接的外部工作正常-我认为)。

这可能是由于我处理链接的方式吗?我是否需要创建一些功能以在请求上重新插入Cookie,以创建一致的登录体验?

如果您需要更多信息,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试一下

 WebView.getSettings().setAppCacheEnabled(true);
   WebView.getSettings().setAppCachePath("/data/data" + getPackageName() + "/cache");
   WebView.getSettings().setSaveFormData(true);
   WebView.getSettings().setDatabaseEnabled(true);
   WebView.getSettings().setDomStorageEnabled(true);
    CookieManager.getInstance().acceptCookie();
    CookieManager.setAcceptFileSchemeCookies(true);