2

基本上我想获取我已经从 javascript 访问过的数据并将其传递给 Java/Android,以便我可以在那里使用它。

     /* An instance of this class will be registered as a JavaScript interface */
    class MyJavaScriptInterface {


        @SuppressWarnings("unused")
        public void setX(String html){
            Activity.this.x = html;
            Toast.makeText(myApp, Activity.this.x, Toast.LENGTH_LONG).show();
        }

    }

这可行,但我希望能够在任何地方调用相同的 Toast 行并获得相同的结果。目前它仅在通过 webview.loadUrl("Javascript:"...

有小费吗?

4

3 回答 3

3

您不能访问存储的 javascript 变量,您必须通过函数调用来访问。您必须从 html 页面中的 javascript 调用它,例如:

TheNameOfYourInterface.setX('value');

TheNameOfYourInterface 将是一个 javascript 对象,当您通过

YourWebView.addJavascriptInterface(new MyJavaScriptInterface(),"TheNameOfYourInterface");

所以你可以在你的webview上做逻辑,并在你设置数据时调用接口,这样Java端的方法就会被调用。

于 2012-07-02T11:13:19.890 回答
1

我找到了我需要的不同解决方案,我觉得它适用于所有不需要通过 javascript 计算的值的人。我的解决方案是 HTTP GET html/javascript,然后将其解析为字符串。它不需要加载 X WebViews 然后(重新)在 JavaScript 界面中创建我的所有函数,从而节省了我一些时间。

于 2012-08-06T15:02:54.447 回答
0

我认为将 HTML 存储在 Shared Preferences 中是个好主意,这是一种持久存储形式。这样您就可以从任何地方访问它。

   //------get sharedPreferences

SharedPreferences pref = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);

//--------modify the value

pref.edit().putString("ToastString", html).commit();

//-------get a value from this from anywhere

String toastValue=pref.getString("ToastString", "");
于 2012-07-02T06:04:30.927 回答