public class MainActivity extends AppCompatActivity {    public static final int REQUEST_CALL_PERMISSION = 101; //拨号请求码    public static final String TAG = "TAG";    private WebView mWebView;    @SuppressLint("SetJavaScriptEnabled")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mWebView = (WebView) findViewById(R.id.webView);        //加载本地html文件        mWebView.loadUrl("file:///android_asset/index.html");        //设置java可以调用js方法        WebSettings webSettings = mWebView.getSettings();        webSettings.setJavaScriptEnabled(true);        //定义JsInteration方法,供js调用        mWebView.addJavascriptInterface(new JsInteration(), "android");    }    //Android调用有返回值js方法    @TargetApi(Build.VERSION_CODES.KITKAT)    public void onClick(View v) {        mWebView.evaluateJavascript("sum(1,2)", new ValueCallback() {            @Override            public void onReceiveValue(String value) {                //Log.e(TAG, "onReceiveValue value=" + value);                Toast.makeText(MainActivity.this, "android调用js得到的结果是:" + value, Toast.LENGTH_SHORT).show();            }        });    }    public class JsInteration {        @JavascriptInterface        public void back() {            checkReadPermission(Manifest.permission.CALL_PHONE, REQUEST_CALL_PERMISSION);            call("tel:" + "10000");        }    }    /**     * 判断是否有某项权限     *     * @param string_permission 权限     * @param request_code      请求码     * @return     */    public boolean checkReadPermission(String string_permission, int request_code) {        boolean flag = false;        if (ContextCompat.checkSelfPermission(this, string_permission) == PackageManager.PERMISSION_GRANTED) {//已有权限            flag = true;        } else {//申请权限            ActivityCompat.requestPermissions(this, new String[]{string_permission}, request_code);        }        return flag;    }    /**     * 检查权限后的回调     *     * @param requestCode  请求码     * @param permissions  权限     * @param grantResults 结果     */    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        switch (requestCode) {            case REQUEST_CALL_PERMISSION: //拨打电话                if (permissions.length != 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {//失败                    Toast.makeText(this, "请允许拨号权限后再试", Toast.LENGTH_SHORT).show();                } else {//成功                    //call("tel:"+"10086");                    //Toast.makeText(this, "10000", Toast.LENGTH_SHORT).show();                    call("tel:" + "10000");                }                break;        }    }    /**     * 拨打电话(直接拨打)     *     * @param telPhone 电话     */    public void call(String telPhone) {        if (checkReadPermission(Manifest.permission.CALL_PHONE, REQUEST_CALL_PERMISSION)) {            Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(telPhone));            startActivity(intent);        }    }}

 

//index.html

        

//xml文件

<?xml version="1.0" encoding="utf-8"?>    

更多相关文章

  1. android隐藏以及显示软键盘以及不自动弹出键盘的方法
  2. Unity同步加载Android里的StreamingAssets里的文件
  3. Ubuntu下Eclipse开发Android经常崩溃的解决方法
  4. android webview 下载文件
  5. AndroidManifest.xml文件详解(activity)(一)
  6. Android 常用画图方法练习

随机推荐

  1. 自定义Activity间跳转效果
  2. Android(安卓)studio虚拟机adb环境配置
  3. Android(安卓)使用 MuMu模拟器 进行程序
  4. 在android里用ExpandableListView实现二
  5. Android(安卓)Studio中的跨进程访问(aidl)
  6. Android(安卓)失去焦点,关闭弹出的软键盘
  7. Animation动画概述和执行原理
  8. Android(安卓)解析strings.xml国际化
  9. Android安装常见错误解决办法
  10. Android中文API(127) ―― MessageQueue