Có thể gọi các phương thức hoạt động chính từ giao diện JavaScript của đối tượng WebView không? Hoặc để truy cập SharedPreferences từ giao diện này để tôi có thể đọc dữ liệu với hoạt động của mình? Tôi muốn cho Hoạt động của tôi biết rằng một hành động JavaScript cụ thể đã xảy ra.Android WebView: các phương thức hoạt động gọi là giao diện JavaScript
Trả lời
Có, liên lạc hai chiều giữa JavaScript và ứng dụng của bạn là có thể thông qua WebView.addJavascriptInterface()
. Kiểm tra ví dụ này:
http://android-developers.blogspot.com/2008/09/using-webviews.html
OK, loại giải quyết vấn đề của tôi. Trong ví dụ được đưa ra bởi bạn nó hoạt động, bởi vì DemoJavaScriptInterface là một lớp con của lớp WebViewDemo và có thể truy cập các phương thức của nó. Nhưng liệu có cách nào để đạt được nó khi nó không phải là một phân lớp? – Krzychu
Nó không sử dụng bất kỳ phương thức 'WebViewDemo' nào. Nó chỉ sử dụng 'mHandler' và nó có thể được truyền cho constructor. – Caner
Tôi đã cố gắng chuyển 'mHandler' nhưng hoạt động chính vẫn không thể truy cập được. Khi tôi thử 'mHandler.post (Runnable mới() { chạy void công khai() { mWebView.loadUrl (" javascript: wave() "); } }); 'Tôi nhận được _myWebView không thể được giải quyết_ – Krzychu
Bạn có thể sử dụng WebView.addJavascriptInterface
chức năng để đạt được điều này. Thông tin thêm: In Google documentation
hoạt động của bạn:
/*
* 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 Markup:
<script type="text/javascript">
alert(android.getPhoneNumber());
</script>
=================== ================================================== ===
Trong ví dụ này cho api17 + getPhoneNumber phải có chú thích @ android.webkit.JavascriptInterface – MazarD
- 1. Android 4.2.1, giao diện WebView và javascript ngắt
- 2. Android SDK WebView gọi Hoạt động
- 3. Android: là phương thức View.onClick() được gọi trên luồng giao diện người dùng chính không?
- 4. JavaScript không hoạt động trong Android WebView
- 5. Phương thức WebView không được gọi trong android
- 6. Phương thức hoạt động gọi từ Fragment
- 7. Trình xử lý giao thức WebView Android
- 8. WebView: Phương thức WebViewClient.onPageStarted không được gọi là
- 9. Phương thức loadUrl của WebView có chạy trên chuỗi giao diện người dùng không?
- 10. Javascript không hoạt động trong Hoạt động webView
- 11. Phương thức Javascript toSource() không hoạt động
- 12. Android - Viewpager và fragments, các phương thức không hoạt động
- 13. Gọi phương thức C++ từ webviews Javascript
- 14. Phương thức lớp hoạt động khác khi được gọi là phương thức thể hiện?
- 15. động gọi phương thức trên giao diện {} không phân biệt thu loại
- 16. Tại sao có thể gọi phương thức trên phương thức giao diện Java? [So sánh]
- 17. Truyền tham số động ném RuntimeBinderException khi gọi Phương thức từ giao diện Thừa kế
- 18. Giao diện có phương thức toString không?
- 19. Thêm Giao diện JavaScript vào Trình duyệt
- 20. Android WebView Javascript getSelection
- 21. Phương thức hoạt động nào được gọi trước?
- 22. Gọi phương thức Phân đoạn từ hoạt động gốc
- 23. sử dụng javascript trong webview android
- 24. Giao diện và các phương thức không đồng bộ
- 25. Phương thức đệ quy hoạt động trong java với giao diện điều khiển, nhưng không phải với android
- 26. Phương thức giao diện Java Phương pháp: Mỗi lớp có thực hiện một giao diện không?
- 27. Phương thức khởi tạo trong giao diện
- 28. StarUML định nghĩa các phương thức và thuộc tính giao diện trong biểu tượng giao diện?
- 29. C# Giao diện với các phương thức tùy chọn
- 30. Phương thức gọi là đóng
bản sao có thể có của [Thêm giao diện JavaScript vào trình duyệt] (http://stackoverflow.com/questions/3765860/adding-javasc ript-interface-to-a-browser) – skolima