Android 6.0動(dòng)態(tài)權(quán)限

動(dòng)態(tài)權(quán)限分為兩類

1.不涉及隱私的權(quán)限

需要在Manifest中聲明

  • 網(wǎng)絡(luò)權(quán)限
  • 藍(lán)牙權(quán)限
  • NFC權(quán)限等

2.涉及隱私的權(quán)限

也需要在Manifest中聲明

  • SD卡讀寫(xiě)權(quán)限
  • 短信讀寫(xiě)權(quán)限
  • 聯(lián)系人讀寫(xiě)權(quán)限等

3.需要?jiǎng)討B(tài)授權(quán)的權(quán)限組

  • **CALENDAR(日歷) **
    READ_CALENDAR
    WRITE_CALENDAR
  • CAMERA(相機(jī))
    CAMERA
  • CONTACTS(聯(lián)系人)
    READ_CONTACTS
    WRITE_CONTACTS
    GET_ACCOUNTS
  • LOCATION(位置)
    ACCESS_FINE_LOCATION
    ACCESS_COARSE_LOCATION
  • MICROPHONE(麥克風(fēng))
    RECORD_AUDIO
  • **PHONE(手機(jī)) **
    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(存儲(chǔ)卡)
    READ_EXTERNAL_STORAGE
    WRITE_EXTERNAL_STORAGE

4.動(dòng)態(tài)申請(qǐng)權(quán)限

最簡(jiǎn)單的方法就是用Android Studio新建一個(gè)login項(xiàng)目,選擇Login Activity項(xiàng)目

  • Paste_Image.png
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return true;
        }
        if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
            return true;
        }
        if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
            Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
                    .setAction(android.R.string.ok, new View.OnClickListener() {
                        @Override
                        @TargetApi(Build.VERSION_CODES.M)
                        public void onClick(View v) {
                            requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
                        }
                    });
        } else {
            requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
        }
        return false;
    }
Paste_Image.png

checkSelfPermission(),shouldShowRequestPermissionRationale(),requestPermissions(),在Android SDK 23以上的API中,已經(jīng)存在的方法。Activity繼承AppCompatActivity就會(huì)存在。 如果使用低于23版本的SDK,可以使用v4 包的中AppCompat.checkSelfPermission()去調(diào)用,這是為了兼容23以下版本的兼容包工具。

Paste_Image.png

這里的數(shù)據(jù)就是你需要請(qǐng)求的權(quán)限組
當(dāng)權(quán)限請(qǐng)求成功時(shí),不要忘記,權(quán)限請(qǐng)求成功之后的回調(diào),需要重寫(xiě)onRequestPermissionsResult()方法,如下

  • Paste_Image.png

5.推薦一個(gè)動(dòng)態(tài)申請(qǐng)權(quán)限的類庫(kù),GitHub上1000多star

直接點(diǎn)擊地址:
AndPermissionhttps://github.com/yanzhenjie/AndPermission

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容