簡體   English   中英

將Javascript變量傳遞給Android活動?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM