2013-11-27 4 views
4

Я создал приложение, в котором я использую webview и загружаю старую старую html-страницу. Я вызываю функцию java-скрипта из активности, но я не могу вызвать функцию из java-скрипта. Я пробовал немного ссылки, но это не сработало.
Javascript Callback function pass to Android
I cannot call an android function from javascript
Вот мой код. Заранее спасибо.Android: функция обратного вызова из java-скрипта в java


acitivity_main.xml

<Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Call JavaScript Function" 
     android:onClick="callJavaScript" /> 

<WebView 
    android:id="@+id/myWebView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

index.html

<html> 
<head> 
<script type="text/javascript"> 
     function displayMessage(){ 
      document.getElementById('test1').innerHTML = 'This is from java script.'; 
      Android.returnResult(); 
     } 
    </script> 
</head> 
<body> 
    <h1 id="test1">Hello World</h1> 
</body> 
</html> 

Основная деятельность имеет следующие две функции.

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     myWebView = (WebView) this.findViewById(R.id.myWebView); 
     myWebView.getSettings().setJavaScriptEnabled(true); 
     myWebView.addJavascriptInterface(new JavaScriptHandler(this), "Android"); 
     myWebView.loadUrl("file:///android_asset/index.html"); 
    } 

    public void callJavaScript(View view) { 
     Log.v(null, "Calling java Script"); 
     myWebView.loadUrl("javascript:displayMessage()"); 
    } 

Это класс JavaScriptHandler

public class JavaScriptHandler { 
    Context mContext; 

    public JavaScriptHandler(Context context) { 
     mContext = context; 
    } 

    public void returnResult() { 
     Log.v(null, "result received"); 
    } 
} 
+0

Подтвердите, что ваш javascript-метод правильно вызвал ваш метод javascript. В противном случае я не вижу никаких проблем в вашей реализации. – Arunkumar

+0

Спасибо за ответ, я добавил строку, чтобы изменить текст html при вызове java-скрипта, и он работал, так или иначе, я получил ответ, похоже, что мне пришлось использовать аннотацию. –

ответ

4

Сделать

@JavascriptInterface 
public void returnResult() { 
    Log.v(null, "result received"); 
} 

Это аннотаций позволяет подвергать методы JavaScript.

+0

Спасибо Хардик. –

Смежные вопросы