2016-12-27 15 views
0

ここで、アンドロイドのwebviewから要素を取得するコードがあります。何が間違っているかわからないようです。それはいくつかの愚かな間違いかもしれませんが、私はなぜ、何が間違っているのか分かりません。ありがとう。JavascriptがWebViewで動作しない - Android

private void retrieveContentWebView(String address){ 

    Log.d("Web Download"," Inside "); 
    Log.d("Web Download ","address : " + address); 

    WebView webView; 

    webView = new WebView(context); 
    webView.loadUrl(address); 

    webView.getSettings().setJavaScriptEnabled(true); 
    webView.addJavascriptInterface(this, "myjava"); 


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
     webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 

    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webView.getSettings().setDomStorageEnabled(true); 

    webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      Log.d("Web Download"," Inside Page Started"); 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 

      Log.d("Web Download"," Inside Page Finished"); 

       view.loadUrl("javascript: {" + 
         "var titleTexts = document.getElementsByTagName('title')[0]" + 
         "myjava.onData(titleTexts.text);}"); 

     } 
    }); 

} 

//This method will be registered as a JavaScript interface 
@JavascriptInterface 
@SuppressWarnings("unused") 
public void onData(final String value){ 

    Log.d("Web Download"," Inside Handler"); 

    final String getValue = value; 

    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // Do something after 5s = 5000ms 
      Log.d("Web Download HTML :",getValue); 
     } 
    }, 5000); 


} 
+0

'getElementsByTagName( 'title')[0]'の後にセミコロンを付ける必要がありますか?それ以外の場合は、 'myjava'で始まる次の行にまっすぐに実行されます。 – Bobulous

答えて

1

あなたWebViewにこれを追加してみてください:

webView.setWebChromeClient(new MyCustomChromeClient(this)); 

自分のためMyCustomChromeClientを作成します。

関連する問題