WebViewオブジェクトのJavaScriptインターフェイスからメインアクティビティのメソッドを呼び出すことはできますか?または、このインターフェースからSharedPreferencesにアクセスして、私の活動でデータを読むことができましたか?特定のJavaScriptアクションが発生したことをアクティビティに伝えたいと思います。Android WebView:コールアクティビティメソッドフォームJavaScriptインターフェイス
答えて
はい、JavaScriptとアプリケーション間の双方向通信はWebView.addJavascriptInterface()
から可能です。この例をチェックしてください:
http://android-developers.blogspot.com/2008/09/using-webviews.html
これは私の問題を解決します。 DemoJavaScriptInterfaceはWebViewDemoクラスのサブクラスであり、そのメソッドにアクセスできるため、あなたが与えた例では動作します。しかし、それがサブクラスではないときに達成する方法はありますか? – Krzychu
'WebViewDemo'メソッドは使用しません。それは 'mHandler'のみを使用し、コンストラクタに渡すことができます。 – Caner
私は 'mHandler'を渡そうとしましたが、主なアクティビティにはまだアクセスできません。 'mHandler.post(new Runnable(){ } {0} {mWebView.loadUrl(" javascript:wave() "); } }}); '_myWebViewは解決できません。 – Krzychu
あなたはこれを達成するためにWebView.addJavascriptInterface
機能を使用することができます。さらに詳しい情報:In Google documentation
あなたの活動:
/*
* entry point of the application starting the index.html of PhoneGap
* */
package com.test.my.myApp;
import org.apache.cordova.DroidGap;
import android.os.Bundle;
import android.util.Log;
import com.google.analytics.tracking.android.EasyTracker;
public class MyOpelMainActivitiy extends DroidGap
{
String curPhoneNumber;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("file:///android_asset/www/app/index.html",15000);
}
@Override
public void onStart() {
super.onStart();
this.appView.addJavascriptInterface(new JsInterface(), "android");
curPhoneNumber = "test";
// The rest of your onStart() code.
EasyTracker.getInstance().activityStart(this); // Add this method.
}
@Override
public void onDestroy()
{
super.onDestroy();
com.google.analytics.tracking.android.EasyTracker.getInstance().activityStop(this);
}
public class JsInterface{
public String getPhoneNumber()
{
// Here call any of the public activity methods....
return curPhoneNumber;
}
}
}
HTMLマークアップ:
<script type="text/javascript">
alert(android.getPhoneNumber());
</script>
=================== ========================================== ===
この例では、api17 +のgetPhoneNumberにはアノテーション@ android.webkit.JavascriptInterfaceが必要です – MazarD
- 1. Android webViewのJavascript
- 2. Android webview javascriptのバグ
- 3. Android WebView Java-Javascriptブリッジ
- 4. JWPlayer Android用のJavascript API Webview
- 5. WebView JavaScript Bridgeドキュメント
- 6. Android webViewとJavascriptのやりとり
- 7. android webViewのjavascriptをロードする方法
- 8. android webviewのjavascriptを使用して
- 9. JavaScriptインターフェイス
- 10. Android webview
- 11. Android WebView
- 12. WebView Javascriptからのローカルアクセスファイル
- 13. Android webview banマルチタッチズーム
- 14. Android Webview shouldOverrideUrlLoadingメソッド
- 15. Android WebViewのスムーススクロール
- 16. android webview encrypted content
- 17. Androidハードウェアアクセラレーションwebviewクラッシュ
- 18. アクセシビリティとAndroid WebView
- 19. Android WebView restoreState freeze
- 20. Android webviewのプログレスバー
- 21. Android WebViewのスクロールダウン
- 22. AndroidのWebViewの
- 23. Android WebViewプロトコルハンドラ
- 24. Android WebViewの幅
- 25. Android Webview SCROLL
- 26. Android Webviewプライベートブラウジング
- 27. ファイルアップロードAndroid 4.4 WebView
- 28. Android WebView TimeOut
- 29. 一時Webview Android
- 30. Android WebViewとYouTube
[JavaScriptインターフェイスをブラウザに追加](http://stackoverflow.com/questions/3765860/adding-javasc) ript-interface-to-a-browser) – skolima