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();
        }

    }

これは機能しますが、同じトーストラインをどこからでも呼び出して同じ結果を得ることができるようにしたいと思います。現在、webview.loadUrl( "Javascript:" .. ..を介したロードによって呼び出されない場合にのみ、null/空を返します。

任意のヒント?

4

3 に答える 3

3

保存された JavaScript 変数にアクセスすることはできません。関数呼び出しを介してアクセスする必要があります。HTMLページのjavascriptから呼び出す必要があります。次に例を示します。

TheNameOfYourInterface.setX('value');

TheNameOfYourInterface は、インターフェイスを webview に追加すると、javascript オブジェクトになります。

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

そのため、webview でロジックを実行し、データを設定するときにインターフェイスを呼び出して、Java 側のメソッドが呼び出されるようにすることができます。

于 2012-07-02T11:13:19.890 に答える
1

必要なものに対する別の解決策を見つけました.javascriptで計算された値を取得する必要がないすべての人に役立つと思います. 私のニーズに対する私の解決策は、html/javascript を HTTP GET してから文字列として解析することでした。X WebViews をロードする必要がなく、JavaScript インターフェイスですべての関数を (再) 作成する必要がないため、時間を節約できます。

于 2012-08-06T15:02:54.447 に答える
0

HTMLを永続ストレージの形式である共有設定に保存することをお勧めします。これにより、どこからでも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", "");
于 2012-07-02T06:04:30.927 に答える