我们可以在Android WebView中保存登录数据吗? [英] Can we save login data in android WebView?

查看:53
本文介绍了我们可以在Android WebView中保存登录数据吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的网站需要登录才能使用,因此有一种方法可以为用户保存登录数据,以便他们每次输入 WebView (例如firebase)时都不会登录.Cookie等?如果您需要共享我的代码,请告诉我.

My website needs to be logged in to use it, so is there a way to save login data for the users so they will not log in every time they enter the WebView, like firebase, or cookies, etc? If you need to share my code, please let me know.

谢谢.

这是MainActivity.java文件代码:

This is MainActivity.java file code:

package com.company.app;

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

WebView webView;
SwipeRefreshLayout swipe;

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

    findViewById(R.id.webView).setVisibility(View.GONE);

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

    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);

    WebView webview = new WebView(this);
    WebSettings ws = webview.getSettings();
    ws.setSaveFormData(true);
    ws.setSavePassword(true); // Not needed for API level 18 or greater (deprecated)


    WebAction();



}

public void WebAction(){

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAppCacheEnabled(true);

    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        // chromium, enable hardware acceleration
        webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
    } else {
        // older android version, disable hardware acceleration
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }


    String myURL = "https://www.myURL.com/";

    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);

    WebView webview = new WebView(this);
    WebSettings ws = webview.getSettings();
    ws.setSaveFormData(true);
    ws.setSavePassword(true); // Not needed for API level 18 or greater (deprecated)


    webView.loadUrl(myURL);
    swipe.setRefreshing(true);
    webView.setWebViewClient(new WebViewClient(){

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

            webView.loadUrl("file:///android_asset/error.html");

        }

        public void onPageFinished(WebView view, String url) {
            // do your stuff here
            swipe.setRefreshing(false);

            findViewById(R.id.webView).setVisibility(View.VISIBLE);


        }

    });

}


@Override
public void onBackPressed(){

    if (webView.canGoBack()){
        webView.goBack();
    }else {
        finish();
    }
}

}

推荐答案

我找到了答案.

我们只需要添加 this.webView.getSettings().setDomStorageEnabled(true); 以及 this.webView.getSettings().setJavaScriptEnabled(true); .

现在我们可以删除cookie代码,并保存数据和登录信息.

Now we can delete the cookies codes, and save data and logins.

如果它不起作用,请尝试不要删除cookie代码.

If it doesn't work, try not to delete the cookies code.

这篇关于我们可以在Android WebView中保存登录数据吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆