我如何在 Android 的 WebView 中获取源代码
How i get source code in WebView in Android
在 onCreate()
final WebView webview = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, final String url) {
String oAuthUrl="http://www.google.com";
if(url.contains(oAuthUrl))
webview.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
}
});
webview.loadUrl("http://www.google.com");
MyJavaScriptInterface class
class MyJavaScriptInterface
{
@SuppressWarnings("unused")
public void processHTML(final String html)
{
Log.i("processed html",html);
Thread OauthFetcher=new Thread(new Runnable() {
@Override
public void run() {
String oAuthDetails=null;
oAuthDetails=Html.fromHtml(html).toString();
Log.i("oAuthDetails",oAuthDetails);
}
});OauthFetcher.start();
}
}
我发现堆栈中的代码溢出了。我运行了这个应用程序,但我没有在我的 webview 页面中获得源代码。我想获取 webview 的源代码并等于 String。我能怎么做?
确保将 @JavascriptInterface
添加到 processHTML 方法。如果您已将 targetSdkVersion 设置为 17 或更高,则必须将 @JavascriptInterface 注释添加到您希望 JavaScript 可用的任何方法(该方法也必须是 public),看看 here.
class MyJavaScriptInterface
{
@JavascriptInterface
public void processHTML(final String html)
{
Log.i("processed html",html);
Thread OauthFetcher=new Thread(new Runnable() {
@Override
public void run() {
String oAuthDetails=null;
oAuthDetails=Html.fromHtml(html).toString();
Log.i("oAuthDetails",oAuthDetails);
}
});OauthFetcher.start();
}
}
在 onCreate()
final WebView webview = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, final String url) {
String oAuthUrl="http://www.google.com";
if(url.contains(oAuthUrl))
webview.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
}
});
webview.loadUrl("http://www.google.com");
MyJavaScriptInterface class
class MyJavaScriptInterface
{
@SuppressWarnings("unused")
public void processHTML(final String html)
{
Log.i("processed html",html);
Thread OauthFetcher=new Thread(new Runnable() {
@Override
public void run() {
String oAuthDetails=null;
oAuthDetails=Html.fromHtml(html).toString();
Log.i("oAuthDetails",oAuthDetails);
}
});OauthFetcher.start();
}
}
我发现堆栈中的代码溢出了。我运行了这个应用程序,但我没有在我的 webview 页面中获得源代码。我想获取 webview 的源代码并等于 String。我能怎么做?
确保将 @JavascriptInterface
添加到 processHTML 方法。如果您已将 targetSdkVersion 设置为 17 或更高,则必须将 @JavascriptInterface 注释添加到您希望 JavaScript 可用的任何方法(该方法也必须是 public),看看 here.
class MyJavaScriptInterface
{
@JavascriptInterface
public void processHTML(final String html)
{
Log.i("processed html",html);
Thread OauthFetcher=new Thread(new Runnable() {
@Override
public void run() {
String oAuthDetails=null;
oAuthDetails=Html.fromHtml(html).toString();
Log.i("oAuthDetails",oAuthDetails);
}
});OauthFetcher.start();
}
}