【Android】动态申请多个权限

【Android】动态申请多个权限

        

下面这个方法根据自己需要申请的权限修改内容,之后调用getPermission()就行。
 

private static final String TAG = "MainActivity"; 
private final int ACCESS_LOCATION=1;
    /**
     * 获取权限,可以与其他项目的权限进行统一处理
     */
    private void getPermission() {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
            int permissionCheck = 0;
            permissionCheck = this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);       //允许一个程序访问精良位置(如GPS)
            permissionCheck += this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION);    //允许一个程序访问CellID或WiFi热点来获取粗略的位置
            permissionCheck += this.checkSelfPermission(Manifest.permission.CAMERA);                    //请求访问使用照相设备

            if (permissionCheck != PackageManager.PERMISSION_GRANTED) {         //未获得权限
                this.requestPermissions( // 请求授权
                        new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
                                Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.CAMERA},ACCESS_LOCATION);// 自定义常量,任意整型
            }
        }
    }

    /**
     * 请求权限的结果回调。每次调用 requestpermissions(string[],int)时都会调用此方法。
     * @param requestCode 传入的请求代码
     * @param permissions 传入permissions的要求
     * @param grantResults 相应权限的授予结果:PERMISSION_GRANTED 或 PERMISSION_DENIED
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case ACCESS_LOCATION:
                if (hasAllPermissionGranted(grantResults)) {
                    Log.i(TAG, "onRequestPermissionsResult: 用户允许权限");
                } else {
                    Log.i(TAG, "onRequestPermissionsResult: 拒绝搜索设备权限");
                }
                break;
        }
    }

    private boolean hasAllPermissionGranted(int[] grantResults) {
        for (int grantResult : grantResults) {
            if (grantResult == PackageManager.PERMISSION_DENIED) {
                return false;
            }
        }
        return true;
    }

即使动态申请的权限也要在AndroidManifest.xml文件里配置

<!--    请求访问使用照相设备-->
  <uses-permission android:name="android.permission.CAMERA" />
<!-- 允许一个程序访问精良位置(如GPS)-->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 允许一个程序访问CellID或WiFi热点来获取粗略的位置-->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值