Android6.0权限简记

一、介绍

        Google在Android6.0之后,将手机各项权限的使用规范做了修改,由原来的在Manifest.xml文件中添加各种我们需要用到的权限,改为不仅在Manifest.xml文件中添加,而且还要动态申请。

        但并非所有权限都需要在代码中一一申请,因为Google将手机权限(Android6.0之后)Google分为了两个两个不同等级的大类,一类是Normal Permission,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等,

        所有危险的 Android 系统权限都属于权限组。如果设备运行的是 Android 6.0(API 级别 23),并且应用的targetSdkVersion是 23 或更高版本时,如果应用请求其清单中列出的危险权限,而应用目前在权限组中没有任何权限,则系统会向用户显示一个对话框,描述应用要访问的权限组。对话框不描述该组内的具体权限;如果应用请求其清单中列出的危险权限,而应用在同一权限组中已有另一项危险权限,则系统会立即授予该权限,而无需与用户进行任何交互。

下面是详细分类:

1、Normal Permission

ACCESS_LOCATION_EXTRA_COMMANDS

ACCESS_NETWORK_STATE 

ACCESS_NOTIFICATION_POLICY

ACCESS_WIFI_STATE

BLUETOOTH

BLUETOOTH_ADMIN

BROADCAST_STICKY

CHANGE_NETWORK_STATE

CHANGE_WIFI_MULTICAST_STATE

CHANGE_WIFI_STATE

DISABLE_KEYGUARD

EXPAND_STATUS_BAR

GET_PACKAGE_SIZE

INSTALL_SHORTCUT

INTERNET

KILL_BACKGROUND_PROCESSES

MODIFY_AUDIO_SETTINGS

NFC

READ_SYNC_SETTINGS

READ_SYNC_STATS

RECEIVE_BOOT_COMPLETED

REORDER_TASKS

REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

REQUEST_INSTALL_PACKAGES

SET_ALARM

SET_TIME_ZONE

SET_WALLPAPER

SET_WALLPAPER_HINTS

TRANSMIT_IR

UNINSTALL_SHORTCUT

USE_FINGERPRINT

VIBRATE

WAKE_LOCK

WRITE_SYNC_SETTINGS

2、Dangerous Permission(权限组->权限)

CALENDAR

        READ_CALENDAR

         WRITE_CALENDAR

CAMERA

        CAMERA

CONTACTS

        READ_CONTACTS

        WRITE_CONTACTS

        GET_ACCOUNTS

LOCATION

        ACCESS_FINE_LOCATION

        ACCESS_COARSE_LOCATION

MICROPHONE

        RECORD_AUDIO

PHONE

        READ_PHONE_STATE

        CALL_PHONE

         READ_CALL_LOG

         WRITE_CALL_LOG

        ADD_VOICEMAIL

         USE_SIP

         PROCESS_OUTGOING_CALLS

SENSORS

        BODY_SENSORS

SMS

        SEND_SMS

        RECEIVE_SMS

        READ_SMS

        RECEIVE_WAP_PUSH

        RECEIVE_MMS

STORAGE

        READ_EXTERNAL_STORAGE

        WRITE_EXTERNAL_STORAGE

二、使用

在Android系统6.0版本中使用危险权限时(当然6.0以下正常在Manifest.xml文件中使用),需要检查该权限是否被用户授权,如果没有,申请;如果已经授权,则可以直接使用。基本的权限使用步骤如下:

1、在清单文件Manifest.xml中添加所有使用到的权限

2、检查是否被用户授权

ContextCompat.checkSelfPermission(Context context, String permission);

//checkSelfPermission方法中有两个参数,分别是上下文,以及所申请的权限。

3、没有被用户授权时,申请权限

public static void requestPermissions(final Activity activity,final String[] permissions, final int requestCode) {}

//requestPermissions方法中需要三个参数,当前的activity,所申请的权限,可以是多个,

//最后就是请求码,既然有请求码说明它会有一个回调,也就是我们下面要讲的处理回调。

4、申请权限成功或者失败后的逻辑处理

申请权限成功或者失败后的逻辑处理处理:需要在Activity中重写onRequestPermissionsResult方法:

@Override

public void onRequestPermissionsResult(int requestCode,

String permissions[], int[] grantResults) {

switch (requestCode) {

case PERMISSIONS_REQUEST_READ_CONTACTS: {//请求的权限

if (grantResults.length > 0

&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {

// 请求权限成功操作

} else {

//请求权限失败操作

}

return;

}

}

}

你可能感兴趣的:(Android6.0权限简记)