Android6.0獲取動(dòng)態(tài)權(quán)限代碼示例
Android系統(tǒng)對(duì)所有的危險(xiǎn)權(quán)限進(jìn)行了分組,稱(chēng)為 權(quán)限組 。屬于同一組的危險(xiǎn)權(quán)限將自動(dòng)合并授予,用戶(hù)授予應(yīng)用某個(gè)權(quán)限組的權(quán)限,則應(yīng)用將獲得該權(quán)限組下的所有權(quán)限(前提是相關(guān)權(quán)限在 AndroidManifest.xml 中有聲明)。
危險(xiǎn)權(quán)限 和 權(quán)限組 列表如下: 在 AndroidManifest.xml 聲明過(guò)的危險(xiǎn)權(quán)限對(duì)應(yīng)的權(quán)限組可以在系統(tǒng) “設(shè)置” -> “應(yīng)用” -> “應(yīng)用信息” -> “權(quán)限” 中查看,可以手動(dòng)授權(quán)和取消授權(quán)。
1、設(shè)備系統(tǒng)是 Android 6.0 (API 23) 或更高版本,并且應(yīng)用的 targetSdkVersion 是 23 或更高版本,則針對(duì)在 AndroidManifest.xml 中聲明的危險(xiǎn)權(quán)限,在運(yùn)行時(shí)還需要?jiǎng)討B(tài)請(qǐng)求用戶(hù)授權(quán)。
2、動(dòng)態(tài)權(quán)限請(qǐng)求相關(guān)操作的API封裝在在android.support.v4包中,發(fā)起請(qǐng)求權(quán)限的Activity需要直接或間接繼承android.support.v4.app.FragmentActivity。
3、 也可以在直接或間接繼承 android.support.v4.app.Fragment 的 Fragment 中發(fā)起權(quán)限請(qǐng)求。
首先在清單文件中注冊(cè)
然后在MainActivity.java中將權(quán)限封裝到一個(gè)String數(shù)組中
static final String[] PERMISSION = new String[]{ Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO, Manifest.permission.RECEIVE_BOOT_COMPLETED };
然后在onCreate()方法中加入一下代碼:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { //Android 6.0申請(qǐng)權(quán)限 ActivityCompat.requestPermissions(this, PERMISSION, 1); } else { Toast.makeText(this, '成功', Toast.LENGTH_SHORT).show(); }
我通常將上述代碼寫(xiě)在另一個(gè)方法中,然后在onCreate()方法中調(diào)用。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章: