例:
/**
* JS调用咱们Java
* Java调用JS
* 通过手机APP一个网页里面的一个按钮,打开咱们相机摄像头
* 通过手机APP一个网页里面的一个按钮,点击,跳转到打电话页面
*/
/**
* JS调用JAVA,需要我们android定义一个方法,提供给JS调用
* 使用webView对象,调用addJavascriptInterface方法
* 第一个参数,是写一个类,在这里提供要暴露的方法,如果你运行android系统版本高,那么你必须加一个注解 @JavascriptInterface
* 第二参数,字符串标识,JS通过这个标识调用我们的方法,Android.showToast(toast);
*/
//在本页面加载网页,不调用系统浏览器
webView.setWebViewClient(new WebViewClient());
//支持js
WebSettings settings = webView.getSettings();
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setJavaScriptEnabled(true);
加权限:
<uses-permission android:name="android.permission.INTERNET"/>
主方法类:
/** * JS调用咱们Java * Java调用JS * 通过手机APP一个网页里面的一个按钮,打开咱们相机摄像头 * 通过手机APP一个网页里面的一个按钮,点击,跳转到打电话页面 */ public class MainActivity extends AppCompatActivity { private static final String HTML_URL = "http://169.254.53.96:8080/test.html"; private WebView mWebView; @SuppressLint("JavascriptInterface") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.show_wb); //因为页面有调用到JS的方法,所以我必须使自己的WebVIew支持JS WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setSupportZoom(true); mWebView.setWebViewClient(new WebViewClient()); /** * JS调用JAVA,需要我们android定义一个方法,提供给JS调用 * 使用webView对象,调用addJavascriptInterface方法 * 第一个参数,是写一个类,在这里提供要暴露的方法,如果你运行android系统版本高,那么你必须加一个注解 @JavascriptInterface * 第二参数,字符串标识,JS通过这个标识调用我们的方法,Android.showToast(toast); */ mWebView.addJavascriptInterface(new Object(){ @JavascriptInterface public void showToast(String context){ Toast.makeText(MainActivity.this,context, Toast.LENGTH_SHORT).show(); } },"Android"); } public void load(View view){ mWebView.loadUrl(HTML_URL); } //Java调用JS方法,格式固定:webVIew对象.loadURL( "javascript:js方法名(参数) " ); public void call(View view){ mWebView.loadUrl( "javascript:changeInputValue('哈哈!1601R键盘敲烂,月薪过万')" ); } }
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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/path_et" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:hint="输入访问网址,直接从www开始即可"/> <Button android:onClick="load" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="加载"/> LinearLayout> <WebView android:id="@+id/show_wb" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="match_parent"> WebView> <Button android:onClick="call" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="调用js的方法"/> LinearLayout>