package com.atguigu.androidandh5; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.webkit.JavascriptInterface; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import static com.atguigu.androidandh5.R.id.webview; /** * 作者:尚硅谷-杨光福 on 2016/7/28 11:19 * 微信:yangguangfu520 * QQ号:541433511 * 作用:java和js互调 */ public class JsCallJavaCallPhoneActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_js_call_java_video); webView = (WebView) findViewById(webview); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);//支持js //添加javascript接口 webView.addJavascriptInterface(new MyJavaScript(),"Android"); //设置客户端 webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Toast.makeText(JsCallJavaCallPhoneActivity.this, "页面加载完成", Toast.LENGTH_SHORT).show(); } }); //加载本地的html或者网络的html webView.loadUrl("file:///android_asset/JsCallJavaCallPhone.html"); // webView.loadUrl("http://10.0.2.2:8080/assets/JsCallJavaCallPhone.html"); } class MyJavaScript{ //加载联系人 @JavascriptInterface public void showcontacts(){ // 下面的代码建议在子线程中调用 String json = "[{\"name\":\"阿福\", \"phone\":\"18601042258\"}]"; // 调用JS中的方法 webView.loadUrl("javascript:show('" + json + "')"); } @JavascriptInterface public void call(String phone){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+phone)); startActivity(intent); } } }