Android開(kāi)發(fā)必知:6.0權(quán)限,官方分析

【威哥說(shuō)】去年怔蚌,Google升級(jí)6.0后敷硅,很重要的一點(diǎn)是權(quán)限的改變功咒,到現(xiàn)在很多總結(jié)分析權(quán)限的文章,但是或者不太詳細(xì)绞蹦,或者有疏漏力奋,下面我來(lái)給大家來(lái)總結(jié)下6.0權(quán)限的問(wèn)題。

1.這個(gè)新的運(yùn)行時(shí)權(quán)限僅當(dāng)我們?cè)O(shè)置targetSdkVersion ?23(這意味著你已經(jīng)在23上測(cè)試通過(guò)了)才起作用幽七,當(dāng)然還要是M系統(tǒng)的手機(jī)景殷。app在6.0之前的設(shè)備依然使用舊的權(quán)限系統(tǒng)。

如果app的targetSdkVersion 低于 23,那將被認(rèn)為app沒(méi)有用23新權(quán)限測(cè)試過(guò)滨彻,那將被繼續(xù)使用舊有規(guī)則:用戶在安裝的時(shí)候不得不接受所有權(quán)限藕届,安裝后app就有了那些權(quán)限咯!然后app像以前一樣奔跑亭饵!注意休偶,此時(shí)用戶依然可以取消已經(jīng)同意的授權(quán)!用戶取消授權(quán)時(shí)辜羊,android 6.0系統(tǒng)會(huì)警告踏兜,但這不妨礙用戶取消授權(quán)。

問(wèn)題又來(lái)了八秃,這時(shí)候你的app崩潰嗎碱妆?

善意的主把這事也告訴了android小組,當(dāng)我們?cè)趖argetSdkVersion 低于23的app調(diào)用一個(gè)需要權(quán)限的函數(shù)時(shí)昔驱,這個(gè)權(quán)限如果被用戶取消授權(quán)了的話疹尾,不拋出異常。但是他將啥都不干骤肛,結(jié)果導(dǎo)致函數(shù)返回值是null或者0.

2.代碼沒(méi)有成功改為支持最新運(yùn)行時(shí)權(quán)限的app,不要設(shè)置targetSdkVersion 23 發(fā)布纳本,否則你就有麻煩了。只有當(dāng)你測(cè)試過(guò)了腋颠,再改為targetSdkVersion 23 繁成。

警告:現(xiàn)在你在android studio新建項(xiàng)目,targetSdkVersion 會(huì)自動(dòng)設(shè)置為 23淑玫。如果你還沒(méi)支持新運(yùn)行時(shí)權(quán)限巾腕,我建議你首先把targetSdkVersion 降級(jí)到22

3.權(quán)限組:

同一組的任何一個(gè)權(quán)限被授權(quán)了,其他權(quán)限也自動(dòng)被授權(quán)絮蒿。例如尊搬,一旦WRITE_CONTACTS被授權(quán)了,app也有READ_CONTACTS和GET_ACCOUNTS了歌径。

權(quán)限分組官方表格如下:

下面我們來(lái)看具體的使用方法:

1.請(qǐng)求要申請(qǐng)的權(quán)限

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){

ActivityCompat.requestPermissions(this,

new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE,

Manifest.permission.READ_PHONE_STATE},2);

}else {

startActivity(new Intent(this,MainActivity.class));

finish();

}

2.請(qǐng)求后的回調(diào)方法毁嗦,根據(jù)返回的結(jié)果碼執(zhí)行操作

//動(dòng)態(tài)權(quán)限申請(qǐng)后系統(tǒng)的回調(diào)方法

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

switch (requestCode){

case MY_PERMISSIONS_REQUEST:

for (int i = 0; i < grantResults.length; i++) {

//檢查權(quán)限是否被拒絕

if (grantResults[i] == PackageManager.PERMISSION_DENIED) {

Toast.makeText(SplashActivity.this, "本應(yīng)用需要申請(qǐng)讀寫(xiě)sdcard權(quán)限來(lái)訪問(wèn)本地文件", Toast.LENGTH_SHORT).show();

return;

}

}

break;

}

Intent intent = new Intent(SplashActivity.this,MainActivity.class);

startActivity(intent);

finish();

}

3.要注意這個(gè)方法亲茅,用戶允許或拒絕返回值的類型

/**

* 用戶第一次拒絕后回铛,下一次,返回true克锣,應(yīng)該提示用戶為什么需要這個(gè)權(quán)限茵肃,添加說(shuō)明

* 用戶第二次請(qǐng)求權(quán)限時(shí),用戶拒絕了袭祟,并選擇了不再提醒验残,返回false

* 設(shè)備的策略禁止當(dāng)前應(yīng)用獲取這個(gè)權(quán)限的授權(quán),返回false

*

* 注意:第二次請(qǐng)求權(quán)限時(shí)候才有選項(xiàng)“不再提醒”巾乳,如果用戶一直拒絕您没,但沒(méi)有選擇不再提醒鸟召,下次請(qǐng)求權(quán)限時(shí)候,

* 會(huì)繼續(xù)有不再提醒的權(quán)限

*/

@Override

public boolean shouldShowRequestPermissionRationale(String permission) {

return super.shouldShowRequestPermissionRationale(permission);

}

以上就是Google官方的權(quán)限申請(qǐng)方法氨鹏,這里總結(jié)下實(shí)際使用時(shí)候需要的注意點(diǎn):

1.只請(qǐng)求你需要的權(quán)限:減少請(qǐng)求的次數(shù)欧募,或用intent來(lái)代替,讓其他的應(yīng)用來(lái)處理仆抵。

防止一次請(qǐng)求太多的權(quán)限或請(qǐng)求次數(shù)太多跟继,用戶可能對(duì)你的應(yīng)用感到厭煩。

2.在應(yīng)用啟動(dòng)的時(shí)候镣丑,最好先請(qǐng)求應(yīng)用必須的一些權(quán)限舔糖,不是必須的,在使用的時(shí)候莺匠,才請(qǐng)求(如一些附帶權(quán)限)金吗,需要自己整理,管理一下自己應(yīng)用的權(quán)限分類:

2.1 普通權(quán)限(normal permissions):只需要在androidmanifest.xml中聲明相應(yīng)的權(quán)限趣竣,在安裝應(yīng)用時(shí)辽聊,會(huì)默認(rèn)獲得許可。并且用戶不能修改權(quán)限許可期贫。(只需要在AndroidManifest.xml中簡(jiǎn)單聲明這些權(quán)限就好跟匆,安裝時(shí)就授權(quán)。不需要每次使用 時(shí)都檢查權(quán)限通砍,而且用戶不能取消以上授權(quán)玛臂。)

2.2 需要申請(qǐng)的權(quán)限(dangerous permissions):

2.2.1 必要權(quán)限:最好在應(yīng)用啟動(dòng)的時(shí)候,進(jìn)行請(qǐng)求許可的一些權(quán)限(主要是應(yīng)用中主要功能需要的權(quán)限)

2.2.2 附帶權(quán)限:不是應(yīng)用主要功能需要的權(quán)限(如:分享圖片時(shí)封孙,需要讀取應(yīng)用的通訊錄等等)

3.解釋你的應(yīng)用為什么需要這些權(quán)限:在請(qǐng)求之前requestPermissions().迹冤,提示用戶,讓用戶不會(huì)感到困惑

問(wèn)題持續(xù)收集與回答

小伙伴們嗨起來(lái)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虎忌,一起剝皮案震驚了整個(gè)濱河市泡徙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膜蠢,老刑警劉巖堪藐,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挑围,居然都是意外死亡礁竞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)杉辙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)模捂,“玉大人,你說(shuō)我怎么就攤上這事】衲校” “怎么了综看?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)岖食。 經(jīng)常有香客問(wèn)我寓搬,道長(zhǎng),這世上最難降的妖魔是什么县耽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任句喷,我火速辦了婚禮,結(jié)果婚禮上兔毙,老公的妹妹穿的比我還像新娘唾琼。我一直安慰自己,他們只是感情好澎剥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布锡溯。 她就那樣靜靜地躺著,像睡著了一般哑姚。 火紅的嫁衣襯著肌膚如雪祭饭。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天叙量,我揣著相機(jī)與錄音倡蝙,去河邊找鬼。 笑死绞佩,一個(gè)胖子當(dāng)著我的面吹牛寺鸥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播品山,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胆建,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了肘交?” 一聲冷哼從身側(cè)響起笆载,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涯呻,沒(méi)想到半個(gè)月后凉驻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魄懂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年沿侈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片市栗。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出填帽,到底是詐尸還是另有隱情蛛淋,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布篡腌,位于F島的核電站褐荷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嘹悼。R本人自食惡果不足惜叛甫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杨伙。 院中可真熱鬧其监,春花似錦、人聲如沸限匣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)米死。三九已至锌历,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間峦筒,已是汗流浹背究西。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留物喷,地道東北人怔揩。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像脯丝,于是被迫代替她去往敵國(guó)和親商膊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容