为了账号安全,请及时绑定邮箱和手机立即绑定

Android Webview和LocalStorage

Android Webview和LocalStorage

梵蒂冈之花 2019-12-09 10:17:32
我的webview有问题,它可能通过HTML5应用程序访问localStorage 。test.html文件通知我浏览器(即webview)不支持本地存储。如果您有任何建议。package com.test.HelloWebView; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebStorage; import android.webkit.WebView; import android.webkit.WebViewClient; public class HelloWebView extends Activity { WebView webview; public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     webview = (WebView) findViewById(R.id.webview);     webview.getSettings().setJavaScriptEnabled(true);     webview.setWebViewClient(new HelloWebViewClient());     webview.loadUrl("file:///android_asset/test.html");     WebSettings settings = webview.getSettings();     settings.setJavaScriptEnabled(true);     settings.setDatabaseEnabled(true);     String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();     settings.setDatabasePath(databasePath);    webview.setWebChromeClient(new WebChromeClient() {     public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {             quotaUpdater.updateQuota(5 * 1024 * 1024);         }     }); } public boolean onKeyDown(int keyCode, KeyEvent event) {     if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {         webview.goBack();         return true;     }     return super.onKeyDown(keyCode, event); } private class HelloWebViewClient extends WebViewClient {     public boolean shouldOverrideUrlLoading(WebView view, String url) {         view.loadUrl(url);         return true;     } }} 
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

缺少以下内容:


settings.setDomStorageEnabled(true);


查看完整回答
反对 回复 2019-12-09
?
PIPIONE

TA贡献1829条经验 获得超9个赞

在API级别19中已弃用setDatabasePath()方法。建议您使用如下存储区域设置:


webView.getSettings().setDomStorageEnabled(true);

webView.getSettings().setDatabaseEnabled(true);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {

    webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/");

}


查看完整回答
反对 回复 2019-12-09
?
万千封印

TA贡献1891条经验 获得超3个赞

适用于我的Android 4.2.2的解决方案,已使用构建目标Android 4.4W进行了编译:


WebSettings settings = webView.getSettings();

settings.setDomStorageEnabled(true);

settings.setDatabaseEnabled(true);


if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {

    File databasePath = getDatabasePath("yourDbName");

    settings.setDatabasePath(databasePath.getPath());

}


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 1084 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信