国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法

2019-10-21 21:42:44
字體:
供稿:網(wǎng)友

Android M(6.0)API 23后加入了權(quán)限請(qǐng)求設(shè)置,APP需要使用某些權(quán)限需要主動(dòng)申請(qǐng)。

權(quán)限分為3類,一組是Normal權(quán)限,無需申請(qǐng),另一組是Dangerous,需申請(qǐng),然后是特殊權(quán)限,需申請(qǐng)。

先看下Normal權(quán)限列表:

Android,權(quán)限請(qǐng)求

再看下Dangerous權(quán)限列表:

危險(xiǎn)權(quán)限實(shí)際上才是運(yùn)行時(shí)權(quán)限主要處理的對(duì)象,這些權(quán)限可能引起隱私問題或者影響其他程序運(yùn)行。Android中的危險(xiǎn)權(quán)限可以歸為以下幾個(gè)分組:

CALENDAR
CAMERA
CONTACTS
LOCATION
MICROPHONE
PHONE
SENSORS
SMS
STORAGE

各個(gè)權(quán)限分組與其具體的權(quán)限,可以參考下圖:

Android,權(quán)限請(qǐng)求

想要不支持運(yùn)行時(shí)權(quán)限機(jī)制很簡(jiǎn)單,只需要將targetSdkVersion設(shè)置低于23就可以了,意思是告訴系統(tǒng),我還沒有完全在API 23(6.0)上完全搞定,不要給我啟動(dòng)新的特性。

特殊權(quán)限:

就是一些特別敏感的權(quán)限,在Android系統(tǒng)中,主要由兩個(gè)

SYSTEM_ALERT_WINDOW,設(shè)置懸浮窗,進(jìn)行一些黑科技

WRITE_SETTINGS 修改系統(tǒng)設(shè)置

關(guān)于上面兩個(gè)特殊權(quán)限的授權(quán),做法是使用startActivityForResult啟動(dòng)授權(quán)界面來完成。

請(qǐng)求SYSTEM_ALERT_WINDOW

private static final int REQUEST_CODE = 1;private void requestAlertWindowPermission() { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, REQUEST_CODE);} @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE) { if (Settings.canDrawOverlays(this)) {  Log.i(LOGTAG, "onActivityResult granted"); } }}

上述代碼需要注意的是

使用Action Settings.ACTION_MANAGE_OVERLAY_PERMISSION啟動(dòng)隱式Intent

使用"package:" + getPackageName()攜帶App的包名信息

使用Settings.canDrawOverlays方法判斷授權(quán)結(jié)果

請(qǐng)求WRITE_SETTINGS

private static final int REQUEST_CODE_WRITE_SETTINGS = 2;private void requestWriteSettings() { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS );}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_WRITE_SETTINGS) { if (Settings.System.canWrite(this)) {  Log.i(LOGTAG, "onActivityResult write settings granted" ); } }}

上述代碼需要注意的是

使用Action Settings.ACTION_MANAGE_WRITE_SETTINGS 啟動(dòng)隱式Intent

使用"package:" + getPackageName()攜帶App的包名信息

使用Settings.System.canWrite方法檢測(cè)授權(quán)結(jié)果

注意:關(guān)于這兩個(gè)特殊權(quán)限,一般不建議應(yīng)用申請(qǐng)。

其實(shí)你不需要每個(gè)權(quán)限都去顯式申請(qǐng),舉一個(gè)例子,如果你的應(yīng)用授權(quán)了讀取聯(lián)系人的權(quán)限,那么你的應(yīng)用也是被賦予了寫入聯(lián)系人的權(quán)限。因?yàn)樽x取聯(lián)系人和寫入聯(lián)系人這兩個(gè)權(quán)限都屬于聯(lián)系人權(quán)限分組,所以一旦組內(nèi)某個(gè)權(quán)限被允許,該組的其他權(quán)限也是被允許的。

以上這篇Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 雅江县| 沅陵县| 绥化市| 临沂市| 五台县| 略阳县| 腾冲县| 宝兴县| 峨眉山市| 博白县| 宁远县| 阿瓦提县| 台前县| 长治县| 涟源市| 河南省| 南木林县| 离岛区| 无为县| 资兴市| 九龙坡区| 马山县| 衡南县| 诸城市| 铁岭市| 金川县| 宁武县| 聊城市| 定西市| 东平县| 永寿县| 宝山区| 惠东县| 宽甸| 盱眙县| 泉州市| 天祝| 阳高县| 禄劝| 松溪县| 汶上县|