android 6.0权限申请机制

本文介绍了Android 6.0系统引入的权限申请机制,旨在保护用户隐私。该机制包括三个步骤:检查权限状态、申请权限及处理权限回调。以打电话权限为例,详细讲解了如何在代码中适配这一机制,并提到了在AndroidManifest.xml中添加权限的重要性。同时,列出了Android的危险权限组,帮助开发者了解不同权限的分类。
摘要由CSDN通过智能技术生成

google在android 6.0系统上增加了权限申请机制,目的是保护用户的隐私,对我个人来说感觉很烦,如果一个app用到了很多权限,那么多弹一个框告诉用户,废话不多说,权限机制分三个步骤

第一步:判断是否申请了权限

第二步:没有申请,则要申请权限

第三步:权限回调处理你的业务,这是在用户同意授权的情况下


为了适配6.0以上的系统,还必须在AndroidManifest.xml文件中权限该添加的还是要添加,现在就以打电话为例,

第一步:判断是否申请了权限api:

ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED

这些权限字符串全都定义在permission内部类中了:

public final class Manifest {
    public Manifest() { /* compiled code */ }

    public static final class permission_group {
        public static final java.lang.String CALENDAR = "android.permission-group.CALENDAR";
        public static final java.lang.String CAMERA = "android.permission-group.CAMERA";
        public static final java.lang.String CONTACTS = "android.permission-group.CONTACTS";
        public static final java.lang.String LOCATION = "android.permission-group.LOCATION";
        public static final java.lang.String MICROPHONE = "android.permission-group.MICROPHONE";
        public static final java.lang.String PHONE = "android.permission-group.PHONE";
        public static final java.lang.String SENSORS = "android.permission-group.SENSORS";
        public static final java.lang.String SMS = "android.permission-group.SMS";
        public static final java.lang.String STORAGE = "android.permission-group.STORAGE";

        public permission_group() { /* compiled code */ }
    }

    public static final class permission {
        public static final java.lang.String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
        public static final java.lang.String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
        public static final java.lang.String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
        public static final java.lang.String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
        public static final java.lang.String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
        public static final java.lang.String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
        public static final java.lang.String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
        public static final java.lang.String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
        public static final java.lang.String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
        public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
        public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
        public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
        /**
         * @deprecated
         */
        @java.lang.Deprecated
        public static final java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
        public static final java.lang.String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
        public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
        public static final java.lang.String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
        public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
        public static final java.lang.String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
        public static final java.lang.String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
        public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
        public static final java.lang.String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
        public static final java.lang.String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
        public static final java.lang.String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
        public static final java.lang.String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
        public static final java.lang.String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
        public static final java.lang.String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
        public static final java.lang.String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
        public static final java.lang.String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
        public static final java.lang.String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
        public static final java.lang.String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
        public static final java.lang.String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
        public static final java.lang.String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
        public static final java.lang.String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
        public static final java.lang.String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
        p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值