Android6.0M中對(duì)用戶的權(quán)限分為了一般權(quán)限和危險(xiǎn)權(quán)限,這些危險(xiǎn)權(quán)限除了在AndroidManifest.xml中注冊(cè)以外,還需要在使用的時(shí)候?qū)τ脩暨M(jìn)行請(qǐng)求權(quán)限彈窗提醒,才可以使用。
- 危險(xiǎn)權(quán)限,此類權(quán)限除了需要在AndroidManifest.xml注冊(cè)外,還需要在Activty中動(dòng)態(tài)獲取此權(quán)限,此權(quán)限會(huì)請(qǐng)求用戶允許

group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
Android6.0這些危險(xiǎn)權(quán)限可以通過(guò)adb shell pm list permissions -d -g查看
- 一般權(quán)限,此類權(quán)限只需要在AndroidManifest.xml文件注冊(cè)聲明,用戶打開應(yīng)用時(shí),應(yīng)用會(huì)自動(dòng)獲取聲明權(quán)限
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_INSTALL_PACKAGES
SET_ALARM
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
UNINSTALL_SHORTCUT
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
運(yùn)行時(shí)權(quán)限方法了解
-
ContextCompat.checkSelfPermission方法
用于檢測(cè)某個(gè)權(quán)限是否已經(jīng)被授予,方法返回值為PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED,當(dāng)返回DENIED就需要進(jìn)行申請(qǐng)授權(quán)了
-
ActivityCompat.shouldShowRequestPermissionRationale方法
這個(gè)API主要用于給用戶一個(gè)申請(qǐng)權(quán)限的解釋,該方法只有在用戶在上一次已經(jīng)拒絕過(guò)你的這個(gè)權(quán)限申請(qǐng)。也就是說(shuō),用戶已經(jīng)拒絕一次了,你又彈個(gè)授權(quán)框,你需要給用戶一個(gè)解釋,為什么要授權(quán),則使用該方法。
-
ActivityCompat.requestPermissions方法
此方法用于運(yùn)行時(shí)權(quán)限申請(qǐng),通過(guò)參數(shù)String[] permissions可知,此方法支持多個(gè)權(quán)限申請(qǐng), 系統(tǒng)會(huì)根據(jù)權(quán)限逐一向用戶詢問(wèn)授權(quán)
-
onRequestPermissionsResult方法
此方法是用戶申請(qǐng)權(quán)限回調(diào)方法,通過(guò)此方法判斷權(quán)限授權(quán)狀態(tài),此方法返回參數(shù) requestCode、String[] permissions、int[] grantResults中,requesCode是用戶申請(qǐng)權(quán)限驗(yàn)證的Code,并且返回所有權(quán)限及權(quán)限申請(qǐng)狀態(tài)
PackageManager中的兩個(gè)常量
PackageManager.PERMISSION_DENIED:該權(quán)限是被拒絕的。
PackageManager.PERMISSION_GRANTED:該權(quán)限是被授權(quán)的。