Android 6.0中怎么動(dòng)態(tài)申請(qǐng)權(quán)限,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、寧都網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
系統(tǒng)權(quán)限分為2種:
Normal permission:對(duì)于用戶(hù)隱私?jīng)]有危險(xiǎn)的,在清單文件中申請(qǐng)就可以直接授權(quán)。
Dangerous permission:app需要訪問(wèn)用戶(hù)的隱私信息等,即使在清單文件注冊(cè),也需要在運(yùn)行是通過(guò)用戶(hù)授權(quán)。
Dangerous permission需要單獨(dú)申請(qǐng)的權(quán)限,共分為9組,每組只要有一個(gè)權(quán)限申請(qǐng)成功了,就默認(rèn)整組權(quán)限都可以使用了。
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
申請(qǐng)權(quán)限核心代碼
/**
* android 6.0 以上需要?jiǎng)討B(tài)申請(qǐng)權(quán)限
*/
private void initPermission() {
//定義動(dòng)態(tài)申請(qǐng)的權(quán)限組
String permissions[] = {Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.INTERNET,
Manifest.permission.READ_PHONE_STATE };
ArrayList<String> toApplyList = new ArrayList<String>();
//遍歷要申請(qǐng)的權(quán)限組里的每個(gè)權(quán)限是否已經(jīng)獲取到權(quán)限了
//如果未獲取到權(quán)限加入到toApplyList列表里用于動(dòng)態(tài)申請(qǐng)
for (String perm : permissions) {
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
toApplyList.add(perm);
// 進(jìn)入到這里代表沒(méi)有權(quán)限.
}
}
//判斷是否有需要?jiǎng)討B(tài)申請(qǐng)的權(quán)限用requestPermissions進(jìn)行申請(qǐng)
if (toApplyList.size() > 0) {
String tmpList[] = new String[toApplyList.size()];
if (!toApplyList.isEmpty()) {
ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
}
} else {
//如果沒(méi)有需要?jiǎng)討B(tài)申請(qǐng)的權(quán)限直接進(jìn)入我們要做的事件
InitVoice();
}
}
同時(shí)要在activity里面重寫(xiě)一下onRequestPermissionsResult方法,用于獲取到后權(quán)限的動(dòng)作.
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// 此處為android 6.0以上動(dòng)態(tài)授權(quán)的回調(diào),用戶(hù)自行實(shí)現(xiàn)。
for (String perm : permissions) {
//得到申請(qǐng)權(quán)限的返回結(jié)果,如果未獲取到權(quán)限直接關(guān)閉當(dāng)前activity
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
finish();
}
}
//申請(qǐng)到權(quán)限后執(zhí)行我們要做的事件
InitVoice();
}
在activity的onCreate事件加入權(quán)限申請(qǐng)的調(diào)用
try {
final PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
int targetSdkVersion = info.applicationInfo.targetSdkVersion;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (targetSdkVersion >= Build.VERSION_CODES.M) {
initPermission();
}
}else {
InitVoice();
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
關(guān)于Android 6.0中怎么動(dòng)態(tài)申請(qǐng)權(quán)限問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
網(wǎng)站名稱(chēng):Android6.0中怎么動(dòng)態(tài)申請(qǐng)權(quán)限
網(wǎng)站地址:http://jinyejixie.com/article44/ipihhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、企業(yè)建站、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化、商城網(wǎng)站、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)