申请权限

2018-08-21  本文已影响0人  Aptitude

程序运行过程中会遇到权限需求问题,这时就会需要权限。
一般的,

 <uses-permission android:name="android.permission.INTERNET" />

但正常情况下这些权限是禁止的,因此需要请求用户打开权限。

1. 拨打电话的方法

private void call() {
        try {
            //构建了隐式Intent,Intent的action为Intent.ACTION_CALL
            Intent intent = new Intent(Intent.ACTION_CALL);
            //data指定了协议是tel
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        } catch (SecurityException ex) {
            ex.printStackTrace();
        }
    }

2. 请求权限

            //判断用户是否授权,借助ContextCompat.checkSelfPermisseion()方法
            if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) !=
                    PackageManager.PERMISSION_GRANTED) {
                //没有授权则申请授权
                /*
                * 参数一为activity实例
                * 参数二为一个String数组,将要授权的权限名写到数组中
                * 参数三为请求码,唯一即可*/
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
            } else {
                call();
            }

3. 权限请求结果

调用完requestPermissions()后,无论结果如何,都会回调到onRequestPermissionResult()方法中。

//最终都会回调这个方法
    public void onRequestPermissionResult(int requestCode,String[] permissions,int[] grantResults){
        //结果在grantResults中
    switch(requestCode){
        case 1:
            if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                call();
            }else{
                Toast.makeText(this,"You denied the permission",Toast.LENGTH_SHORT).show();
            }
            break;
        default:
    }
    }

以上就是关于权限申请的内容。

上一篇 下一篇

猜你喜欢

热点阅读