Android-直接从Java读取HTML5本地存储数据

Android-直接从Java读取HTML5本地存储数据,android,local-storage,Android,Local Storage,我有一个简单的Android应用程序,它有一个网络视图。WebView设置为浏览到使用JavaScript的localStorage功能的站点 我已将我的Web设置设置为允许存储: webSettings.setJavaScriptEnabled(true); ebSettings.setDomStorageEnabled(true); String dbPath = this.getApplicationContext().getDir("database", MODE_PRIVATE).g

我有一个简单的Android应用程序,它有一个网络视图。WebView设置为浏览到使用JavaScript的localStorage功能的站点

我已将我的Web设置设置为允许存储:

webSettings.setJavaScriptEnabled(true);
ebSettings.setDomStorageEnabled(true);

String dbPath = this.getApplicationContext().getDir("database", MODE_PRIVATE).getPath();        
webSettings.setDatabasePath(dbPath);
我需要的是我的Java代码能够读取使用localStorage机制存储的变量的方法,即:

JavaScript实现了以下功能:

    var storage = window.localStorage;
    storage.setItem("name", "Hello World!");
如何从Java代码中从localStorage读取“name”的值?

在您的活动中

yourWebView.setWebChromeClient(new WebChromeClient(){
      public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        Log.d(tag, "That's my local storage value =" + message);
        return false;
      };
    });
(...)
    yourWebView.loadURL("javascript:alert(localStorage.getItem(\"name\"))");
webView.addJavascriptInterface(myInterface, "JSInterface");
Javascript接口类

class myInterface
{

    @JavascriptInterface
    public void getVariable(string fromLocalStorage)
    {
    //your code
    }

}
在javascript中

window.JSInterface.getVariable(localStorage.getItem("variableName"))

是,可以在java(Android)中读取localStorage值

使用这个插件 使用本机存储的

-为此,我们必须设置科尔多瓦值

    NativeStorage.setItem("reference", obj, setSuccess, setError);
    function setSuccess(obj){
    }
    function setError(obj){
    }
并在Anroid Java文件中获取此值:

    SharedPreferences sharedPreferences = getSharedPreferences("MainActivity", MODE_PRIVATE);
    System.out.println("********---------    shared pref values...   " +  sharedPreferences.getString("myid", "no value"));
要写入数据:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
     webView.evaluateJavascript("localStorage.setItem('"+ key +"','"+ val +"');", null);
} else {
     webView.loadUrl("javascript:localStorage.setItem('"+ key +"','"+ val +"');");
}
要读取和警报数据,请执行以下操作:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
     webView.evaluateJavascript("window.alert(localStorage.getItem('"+ key +"'));", null);
} else {
     webView.loadUrl("javascript:window.alert(localStorage.getItem('"+ key +"'));");
}
记住启用Android的JavaScript
WebvView

webView.getSettings().setJavaScriptEnabled(true);

这给了我:“Uncaught SecurityError:无法从“窗口”读取“localStorage”属性:拒绝访问此文档。”@Onheiron我也面临同样的问题。你解决了吗?这里没有一个解决方案适合我。你运气好吗?这利用JavaScript获取值。我需要我的Android应用程序从浏览器请求值,而不是浏览器来启动它。我无法使用此方法调用
webView.loadUrl
webView.evaluateJavaScript
,因为它实际上从未调用过。