//存放在assets的html文件
<html> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html"> <script type="text/javascript"> function javacalljs(){ document.getElementById("content").innerHTML = "<br\>JAVA调用了JS的无参函数"; } function javacalljswith(arg){ document.getElementById("content").innerHTML = ("<br\>"+arg); } </script> </head> <body> HTML 内容显示<br/> <h1><div id="content">内容显示</div></h1> <br/> <input type="button" value="点击调用java代码" οnclick="window.android.startFunction()"> <br/> <input type="button" value="点击调用java代码并传递参数" οnclick="window.android.startFunction('https://123.sogou.com/?71175-1501')"> </body> </html>
//主页面
public class MainActivity extends AppCompatActivity { private WebView contentWebView; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //查找控件 contentWebView = (WebView) findViewById(R.id.webview); btn = (Button) findViewById(R.id.button3); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,WebActivity.class); startActivity(intent); } }); //启用javascript contentWebView.getSettings().setJavaScriptEnabled(true); //从assets目录下面加载html contentWebView.loadUrl("file:///android_asset/web.html"); contentWebView.addJavascriptInterface(MainActivity.this,"android"); //Button按钮 无参调用HTML js方法 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //无参调用js方法 contentWebView.loadUrl("javascript:javacalljs()"); } }); //Button按钮 有参调用HTNL js方法 findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //传递数调用js方法 contentWebView.loadUrl("javascript:javacalljswith("+"'https://123.sogou.com/?71175-1501'" + ")"); //contentWebView.loadUrl("https://123.sogou.com/?71175-1501"); } }); } @JavascriptInterface public void startFunction(){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"show" ,3000).show(); } }); } @JavascriptInterface public void startFunction(final String text){ runOnUiThread(new Runnable() { @Override public void run() { new AlertDialog.Builder(MainActivity.this).setMessage(text).show(); } }); } // @Override // public void onClick(View view) { // if (R.id.button3 != view.getId()){ // return; // //跳转到http://www.baidu.com页面 // //contentWebView.loadUrl(getString(R.string.WebActivity)); // } // } }
//网络页面的activity
public class WebActivity extends AppCompatActivity{ private WebView webview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); //查找控件 webview = (WebView) findViewById(R.id.web); Intent intent = getIntent(); String url = intent.getStringExtra("url"); //加载 webview.loadUrl("https://www.baidu.com/"); //设置 webview.setWebViewClient(new WebViewClient()); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); } }
//activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwie.test.jinfengkai20171214.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Android" /> <Button android:id="@+id/button" android:layout_margin="8dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="调用JS" android:background="@color/colorAccent" android:textColor="#ffffff"/> <Button android:id="@+id/button2" android:layout_margin="8dp" android:layout_width="200dp" android:layout_height="wrap_content" android:text="加载js" android:background="@color/colorAccent" android:textColor="#ffffff"/> <Button android:id="@+id/button3" android:layout_margin="8dp" android:layout_width="200dp" android:layout_height="wrap_content" android:text="加载百度页面" android:background="@color/colorAccent" android:textColor="#ffffff"/> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"></WebView> </LinearLayout>
//activity_web
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/web" android:layout_width="match_parent" android:layout_height="match_parent"></WebView> </LinearLayout>
//需要添加的依赖
<uses-permission android:name="android.permission.INTERNET"/>