2013-06-18 2 views
0

Я пытаюсь вызвать функцию javascript из кода java android. я попытался рассмотреть все предыдущие вопросы, касающиеся этого, но ничего не работает. есть ли предложения? благодаря!вызов функции javascript из android

javascript code: 
<html> 
    <head> 
     <script language="javascript"> 
      function doSomething() { 
       alert('hey!!!!!!!'); 
      } 
     </script> 
    </head> 
    <body> 
     ilana 
    </body> 
</html> 




java code (from an activity on create) 

final WebView webview=(WebView)findViewById(R.id.myWebView); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 
webview.loadUrl("file:///android_asset/www/index.html"); 
webview.setWebChromeClient(new WebChromeClient()); 
webview.loadUrl("javascript:doSomething()"); 

мой обновленный (но до сих пор не работает) код: JavaScript:

<html> 
<head> 
<script type="text/javascript"> 
    function doSomething(){ 
     alert("hello"); 
    } 
</script> 

</head> 
<body> 
hello hello hello! 
</body> 
</html> 

java: 
    final WebView webview=(WebView)findViewById(R.id.myWebView); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.loadUrl("file:///android_asset/www/index.html"); 
    webview.setWebChromeClient(new WebChromeClient()); 
    webview.setWebViewClient(new WebViewClient(){ 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
    view.loadUrl("javascript:doSomething()"); 
    } 

    }); 
+0

возможно дубликат [Android WebView] (HTTP: // StackOverflow. com/questions/5207540/android-webview) – CommonsWare

ответ

2

Я думаю, что вы должны ждать окончания загрузки страницы

попробовать что

webview.setWebViewClient(new WebViewClient(){ 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      view.loadUrl("javascript:doSomething()"); 
     } 
    }); 

где Main.this изменения для вашей деятельности это

webview.setWebChromeClient(new WebChromeClient(){ 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, final JsResult result){ 
      new AlertDialog.Builder(Main.this) 
      .setTitle("Alert") 
      .setMessage(message) 
      .setPositiveButton("OK", 
        new AlertDialog.OnClickListener() 
        { 
         @Override 
         public void onClick(DialogInterface dialog, int which) 
         { 
          result.confirm(); 
         } 
        }) 
      .setCancelable(false) 
      .create() 
      .show(); 
      return true; 
     } 
    }); 

@ комментарии @

мой OnCreate

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    WebView webview = (WebView)findViewById(R.id.webView1); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.setWebViewClient(new WebViewClient(){ 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      Log.d("", "!!!! here 1 !!!!"); 
      view.loadUrl("javascript:doSomething()"); 
     } 
    }); 
    webview.setWebChromeClient(new WebChromeClient(){ 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, final JsResult result){ 
      Log.d("", "!!!! here 2 !!!!"); 
      new AlertDialog.Builder(Main.this) 
      .setTitle("Alert") 
      .setMessage(message) 
      .setPositiveButton("OK", 
        new AlertDialog.OnClickListener() 
        { 
         @Override 
         public void onClick(DialogInterface dialog, int which) 
         { 
          result.confirm(); 
         } 
        }) 
      .setCancelable(false) 
      .create() 
      .show(); 
      return true; 
     } 
    }); 
    webview.loadUrl("file:///android_asset/index.html"); 
+0

Попробуйте этот pone вместе с изменениями, которые я упомянул .... – Triode

+0

должно быть вместо этого или в дополнение к 'webview.setW ebChromeClient (новый WebChromeClient()); ' –

+0

Я добавил это, но все равно ничего. –

0

Вы использовали язык = "JavaScript", правильный атрибут типа = "текст/JavaScript"

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