问题描述
我的网站需要登录才能使用,因此有一种方法可以为用户保存登录数据,以便他们每次输入 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中保存登录数据吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!