[英]Passing a Javascript Variable to Android Activity?
基本上我想獲取我已經從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加載調用時返回null / empty(“Javascript:”...
有小費嗎?
您無法訪問存儲的javascript變量,必須通過函數調用來完成。 你必須在你的html頁面中通過javascript調用它,例如:
TheNameOfYourInterface.setX('value');
通過將界面添加到webview時,TheNameOfYourInterface將成為javascript對象
YourWebView.addJavascriptInterface(new MyJavaScriptInterface(),"TheNameOfYourInterface");
因此,您可以在Web視圖上執行邏輯並在設置數據時調用接口,以便調用Java端的方法。
我找到了一個與我需要的不同的解決方案,我覺得它適用於所有不需要通過javascript獲取值的人。 我需要的解決方案是HTTP獲取html / javascript,然后將其解析為字符串。 通過不需要加載X WebViews然后(重新)在JavaScript界面中創建我的所有功能,它節省了一些時間。
我認為將HTML存儲在共享首選項中是一個好主意,共享首選項是一種持久存儲形式。這樣您就可以從任何地方訪問它。
//------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", "");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.