2016-02-09 30 views
-1

我想從提取的WebView字符串中提取字符串,我用如何從web視圖中的Android

class MyJavaScriptInterface 
{ 
private Context context; 
private TextView textView; 

public MyJavaScriptInterface(Context context, TextView textView) { 
    this.context = context; 
    this.textView = textView; 
} 
public void processContent(String aContent){ 
final String content = aContent; 
textView.post(new Runnable(){ 

    @Override 
    public void run() { 
      textView.setText(content); 
    } 
}); 
} 
} 
webView.getSettings().setJavaScriptEnabled(true); 
webView.addJavascriptInterface(new MyJavaScriptInterface(getActivity(), contentView), "INTERFACE"); 
      webView.setWebViewClient(new WebViewClient() { 

       @Override 
       public void onPageFinished(WebView view, String url) { 
        super.onPageFinished(view, url); 
        view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);"); 
       } 
      }); 
webView.loadUrl(url); 

,但在我processContent沒有字符串,通過在TextView的。

在此先感謝!

+0

你知道processContent()是否被調用嗎?您是否嘗試記錄收到的參數? –

+0

是的,我嘗試登錄。 –

回答

1

可能會工作。

webView.getSettings().setJavaScriptEnabled(true); 
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 
webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      /* This call inject JavaScript into the page which just finished loading. */ 
      webView1.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 
     } 

    }); 

這裏是類

class MyJavaScriptInterface 
{ 
    @JavascriptInterface 
    public void processHTML(String html) 
    { 
     //Html extract here 
     System.out.println("my : " + html); 
    } 
} 
1

把你的功能processContent在MyJavaScriptInterface類像

@JavascriptInterface 
public void processContent(String aContent){ 
    final String content = aContent; 
    textView.post(new Runnable(){ 
     @Override 
     public void run() { 
      textView.setText(content); 
     } 
    }); 
} 

,並更改

view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);"); 

view.loadUrl("javascript:activity.processContent(document.getElementsByTagName('body')[0].innerText);");