注入前:
注入后:
主界面:
package com.example.webviewjsdemo;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
private WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.wv_main);
wv.setWebChromeClient(new WebChromeClient() {
});
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView view, String url) {
Toast.makeText(getApplicationContext(), "3秒后改变内容", 1).show();
new Thread(){
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
view.loadUrl("javascript:function myFunction(){x=document.getElementById(\"demo\"); x.innerHTML=\"改变了html内容!\";}");
view.loadUrl("javascript:myFunction()");
};
}.start();
super.onPageFinished(view, url);
}
});
WebSettings wvSettings = wv.getSettings();
wvSettings.setJavaScriptEnabled(true);
wv.loadUrl("file:///android_asset/demo.html");
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<WebView
android:id="@+id/wv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
assets目录下的demo.html文件
<!DOCTYPE html>
<html>
<body>
<h1>Js注入</h1>
<p id="demo" style="color:red;font-size:16px;">
这里将会改变。
</p>
</body>
</html>