android - Android Studio Webview 登录缓存
问题描述
我的 webview 应用程序打开了一个我需要登录的网站。但如果我登录并销毁应用程序,我需要再次登录。我想缓存登录数据,并且在我注销之前不需要再次登录。我怎样才能让 webview 应用程序像持有缓存一样?如果用户不注销,应用程序必须保持登录状态。感谢您的帮助,这是我的代码:
WebView webid;
String newString;
ImageView loading;
AnimationDrawable animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webid = (WebView) findViewById(R.id.webid);
loading = (ImageView)findViewById(R.id.loader);
animation = (AnimationDrawable) loading.getDrawable();
WebSettings webSettings = webid.getSettings();
webSettings.setJavaScriptEnabled(true);
webid.loadUrl("https://ios.mavicell.com");
webid.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
loading.setVisibility(View.VISIBLE);
animation.start();
}
@Override
public void onPageCommitVisible(WebView view, String url) {
super.onPageCommitVisible(view,url);
loading.setVisibility(View.INVISIBLE);
animation.stop();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
loading.setVisibility(View.INVISIBLE);
animation.stop();
}
});
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("urlayar");
}
} else {
newString= (String) savedInstanceState.getSerializable("urlayar");
}
if (newString != null) {
webid.loadUrl(newString);
webid.getSettings().setJavaScriptEnabled(true);
webid.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
loading.setVisibility(View.VISIBLE);
animation.start();
}
@Override
public void onPageCommitVisible(WebView view, String url) {
super.onPageCommitVisible(view,url);
loading.setVisibility(View.INVISIBLE);
animation.stop();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
loading.setVisibility(View.INVISIBLE);
animation.stop();
}
});
}
else {
}
// Logging set to help debug issues, remove before releasing your app.
OneSignal.setLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.NONE);
// OneSignal Initialization
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
}
@Override
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if (keyCode == KeyEvent.KEYCODE_BACK) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Mavicell");
builder.setMessage("Çıkmak istediğinize emin misiniz?");
builder.setNegativeButton("Hayır", null);
builder.setPositiveButton("Evet", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
builder.show();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
解决方案
下面这行应该做你的工作
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT)
推荐阅读
- sql - 在同一张表内计算
- android - 如何在 RecyclerView 的水平滚动中使卡片半可见,类似于图像中所示
- r - 如何用 ggplot 绘制用矩阵函数生成的列联表?
- android - 在 Android 应用中使用 WRITE_CALL_LOG 权限在 Play 商店中收到警告
- python - 正则表达式匹配大写/特殊/unicode/越南字符
- javascript - 为什么当我在回调函数中返回一个数组而不是一些原语时,map 的工作方式不同?
- jmeter - 如何在敏捷环境中维护 jmeter 脚本
- sonarqube - 单元测试覆盖率在 Sonarqube 中不可见
- java - 400 : Invalid entry ID/URI error in Batch Operation
- vba - 长时间运行的 Excel VBA 查询现在导致 IE 无响应