android动态权限申请

什么是android动态权限

android动态权限是google在android6.0中引入的一种在程序运行时请求的权限,动态一词就是用于区分6.0以前的静态获取权限的方式。6.0以前权限只在安装app时列明,同意安装即意味着同意授予权限。这有可能导致用户的隐私权受到侵犯。所以在6.0以后危险的权限一律需要通过请求允许后方能调用

动态权限的分类

系统权限分为两类:正常权限和危险权限:

  • 正常权限不会直接给用户隐私权带来风险。如果您的应用在其清单中列出了正常权限,系统将自动授予该权限。
  • 危险权限会授予应用访问用户机密数据的权限。如果您的应用在其清单中列出了正常权限,系统将自动授予该权限。如果您列出了危险权限,则用户必须明确批准您的应用使用这些权限。

1.需要用户手动赋予的权限( Dangerous Permissions)

所属权限组权限
日历READ_CALENDAR;WRITE_CALENDAR
相机CAMERA
联系人READ_CONTACTS;WRITE_CONTACTS;GET_ACCOUNTS
位置ACCESS_FINE_LOCATION; ACCESS_COARSE_LOCATION
麦克风RECORD_AUDIO
电话READ_PHONE_STATE;CALL_PHONE;READ_CALL_LOG;WRITE_CALL_LOG;WRITE_CALL_LOG;ADD_VOICEMAIL; USE_SIP;PROCESS_OUTGOING_CALLS
传感器BODY_SENSORS
短信SEND_SMS;RECEIVE_SMS;READ_SMS;RECEIVE_WAP_PUSH;RECEIVE_MMS
存储READ_EXTERNAL_STORAGE;WRITE_EXTERNAL_STORAGE

权限申请关键代码

/**
     * 判断用户是否拥有该权限
     * @param permission 申请的权限
     * @return
     */
    private boolean hasPermission(String permission) {
        int result = PermissionChecker.checkSelfPermission(context, permission);
        if (result != PermissionChecker.PERMISSION_GRANTED) {
            return false;
        }
        return true;
    }
/**
     * 获取是否点击了不再询问按钮,只在androidM生效,动态权限是android6.0以上需求
     * @param permissionName
     * @return
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    private boolean isNeverAsk(@NonNull String permissionName) {
        return ((Activity)context).shouldShowRequestPermissionRationale(permissionName);
    }
/**
     * 动态请求权限 系统会弹个框
     *
     * @param permissions 待用户授权的权限集
     */
    private void requestPermission(String[] permissions) {
        ActivityCompat.requestPermissions(this, permissions, REQ_CODE);
    }

参考资料

https://developer.android.google.cn/guide/topics/security/permissions

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值