Android 動態(tài)權(quán)限中shouldShowRequestPermissionRationale怎么理解倔丈,判斷權(quán)限被禁止

前言

Android6.0之后的有些權(quán)限需要去動態(tài)獲取,這個(gè)過程中呢扼倘,我們或許會遇到這么幾個(gè)方法确封。

1.ContextCompat.checkSelfPermission 檢查權(quán)限是否允許

2.ActivityCompat.requestPermissions 請求某個(gè)或某幾個(gè)權(quán)限

3.onRequestPermissionsResult 手動請求權(quán)限之后的結(jié)果回調(diào)

4.shouldShowRequestPermissionRationale ?再菊?爪喘?

其中前三個(gè)的用途都非常清楚,大家也都知道怎么用的纠拔,這里不做過多解釋秉剑,今天主要看下咱們的主角shouldShowRequestPermissionRationale,看下它是干什么用的稠诲。從shouldShowRequestPermissionRationale這么長的方法名侦鹏,解釋出來就是“應(yīng)不應(yīng)該解釋下請求這個(gè)權(quán)限的目的”诡曙,接下來,咱們先看它的官方注釋略水。

官方解釋

/**

? ? * Gets whether you should show UI with rationale for requesting a permission.

? ? * You should do this only if you do not have the permission and the context in

? ? * which the permission is requested does not clearly communicate to the user

? ? * what would be the benefit from granting this permission.

? ? * <p>

? ? * For example, if you write a camera app, requesting the camera permission

? ? * would be expected by the user and no rationale for why it is requested is

? ? * needed. If however, the app needs location for tagging photos then a non-tech

? ? * savvy user may wonder how location is related to taking photos. In this case

? ? * you may choose to show UI with rationale of requesting this permission.

? ? * </p>

? ? *

? ? * @param activity The target activity.

? ? * @param permission A permission your app wants to request.

? ? * @return Whether you can show permission rationale UI.

蹩腳翻譯

獲取是否應(yīng)顯示具有請求權(quán)限理由的UI价卤,只有在沒有權(quán)限并且上下文的情況下不能清晰明了的表明為什么需要這個(gè)權(quán)限時(shí)才應(yīng)該這樣做。舉例渊涝,你要是實(shí)現(xiàn)一個(gè)照相的app慎璧,用戶可以明白你為什么需要照相的權(quán)限,然而app卻需要定位信息去給照片做標(biāo)注跨释,一個(gè)非技術(shù)又精明的用戶可能很好奇一個(gè)拍照APP怎么會想要定位權(quán)限胸私。在這種情況下您可以選擇在請求定位權(quán)限之前先在UI上解釋下為什么需要它。

返回:你是否可以展示權(quán)限的解釋說明

看完之后你明白了嗎煤傍?講真盖文,我是真不明白,這段注釋只說明了Google工程師設(shè)計(jì)這個(gè)方法的初衷是什么蚯姆,具體有什么功能五续,怎么用的,從這里我真的還看不錯(cuò)來龄恋。

網(wǎng)絡(luò)資源參考

Android6.0動態(tài)權(quán)限shouldShowRequestPermissionRationale的含義這篇文章疙驾,說明的是比較有價(jià)值的:

以某個(gè)權(quán)限為例,

1.第一次請求權(quán)限時(shí)ActivityCompat.我使用的是8.0系統(tǒng)的手機(jī)=false;

2郭毕、第一次請求權(quán)限被禁止它碎,但未選擇【不再提醒】ActivityCompat.shouldShowRequestPermissionRationale=true;

3、允許某權(quán)限后ActivityCompat.shouldShowRequestPermissionRationale=false;

4显押、 禁止權(quán)限扳肛,并選中【禁止后不再詢問】ActivityCompat.shouldShowRequestPermissionRationale=false;

文章中記錄的結(jié)果和我真實(shí)手機(jī)跑程序打印的結(jié)果是一致的(我使用的是8.0系統(tǒng)的手機(jī))乘碑。

shouldShowRequestPermissionRationale的功能價(jià)值何在

在此之前先說明下挖息,由于不同的系統(tǒng)廠商定制的結(jié)果,

1.有的手機(jī)某些權(quán)限清單注冊了權(quán)限就能用兽肤,不用動態(tài)申請(因?yàn)橄到y(tǒng)會在安裝時(shí)自動app分配一些權(quán)限套腹,具體怎么分配的這里暫不做討論);

2.有的手機(jī)在彈出授權(quán)時(shí)選擇拒絕就默認(rèn)了不再彈出资铡;

3.有的沿用了原生系統(tǒng)的規(guī)則电禀;

4.設(shè)置-應(yīng)用-權(quán)限中權(quán)限分“允許、詢問笤休、拒絕”三個(gè)級別尖飞,但是有的權(quán)限只有“允許、拒絕”兩個(gè)級別;

這里先統(tǒng)一下名詞:

允許-- 權(quán)限通過

拒絕--拒絕了但是還允許詢問

禁止--拒絕了且不再允許詢問(如4中所述的“拒絕”先定義為禁止)

從前面就可以看出來葫松,這個(gè)方法大部分情況下是放回false的瓦糕,只有被用戶拒絕了權(quán)限,再次獲取才會得到true腋么;如果沒有申請過咕娄,或者禁止了權(quán)限,都是返回的false珊擂。所以很多人想要通過shouldShowRequestPermissionRationale去判斷是否權(quán)限被禁止圣勒,有時(shí)候是并不準(zhǔn)確的,真要說怎樣會準(zhǔn)確的獲取到權(quán)限被禁止的情況摧扇,那就是:

1.在requestPermissions之后在

onRequestPermissionsResult中獲取到?jīng)]給權(quán)限圣贸,并且shouldShowRequestPermissionRationale是false,此時(shí)可以認(rèn)定該權(quán)限被用戶禁止了扛稽;

2.還有一個(gè)點(diǎn)是是在onRequestPermissionsResult的參數(shù)值第三個(gè)參數(shù)grantResults是null,此時(shí)權(quán)限也是被拒絕的吁峻。(權(quán)限被拒絕后再次調(diào)用requestPermissions,沒有返回結(jié)果)

總結(jié)

shouldShowRequestPermissionRationale在张,回到最初的解釋“應(yīng)不應(yīng)該解釋下請求這個(gè)權(quán)限的目的”用含。

1.都沒有請求過這個(gè)權(quán)限,用戶不一定會拒絕你帮匾,所以你不用解釋啄骇,故返回false;

2.請求了但是被拒絕了,此時(shí)返回true瘟斜,意思是你該向用戶好好解釋下了缸夹;

3.請求權(quán)限被禁止了,也不給你彈窗提醒了螺句,所以你也不用解釋了虽惭,故返回fasle;

4.請求被允許了,都給你權(quán)限了蛇尚,還解釋個(gè)啥趟妥,故返回false。

Google的初衷大概就是第一次requestPermissions的時(shí)候被拒絕時(shí)給你一次解釋的機(jī)會佣蓉,所以是讓你在請求權(quán)限的回調(diào)中使用的。

其它

動態(tài)權(quán)限的適配就是檢測亲雪、請求勇凭,然后看回調(diào),再通過了權(quán)限后再去執(zhí)行自己的方法义辕,但是真正用的時(shí)候又很麻煩虾标,每次調(diào)用相機(jī)、短信灌砖、打電話璧函、訪問通訊錄傀蚌、定位等等都要請求權(quán)限,寫一堆跟業(yè)務(wù)無關(guān)的代碼蘸吓,是不是很煩呢善炫?? 最近整理了一個(gè)關(guān)于方便管理動態(tài)權(quán)限的庫,[Android6.0動態(tài)權(quán)限獲瓤饧獭:一個(gè)EasyPermission的權(quán)限管理庫](http://www.reibang.com/p/671fbbb48551)

附github源碼:https://github.com/githubZYQ/easypermission

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箩艺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宪萄,更是在濱河造成了極大的恐慌艺谆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拜英,死亡現(xiàn)場離奇詭異静汤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)居凶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門虫给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人排监,你說我怎么就攤上這事狰右。” “怎么了舆床?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵棋蚌,是天一觀的道長。 經(jīng)常有香客問我挨队,道長谷暮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任盛垦,我火速辦了婚禮湿弦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腾夯。我一直安慰自己颊埃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布蝶俱。 她就那樣靜靜地躺著班利,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榨呆。 梳的紋絲不亂的頭發(fā)上罗标,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼闯割。 笑死彻消,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宙拉。 我是一名探鬼主播宾尚,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鼓黔!你這毒婦竟也來了央勒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤澳化,失蹤者是張志新(化名)和其女友劉穎崔步,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缎谷,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡井濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了列林。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑞你。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖希痴,靈堂內(nèi)的尸體忽然破棺而出者甲,到底是詐尸還是另有隱情,我是刑警寧澤砌创,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布虏缸,位于F島的核電站,受9級特大地震影響嫩实,放射性物質(zhì)發(fā)生泄漏刽辙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一甲献、第九天 我趴在偏房一處隱蔽的房頂上張望宰缤。 院中可真熱鬧,春花似錦晃洒、人聲如沸慨灭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缘挑。三九已至,卻和暖如春桶略,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工际歼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惶翻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓鹅心,卻偏偏與公主長得像吕粗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子旭愧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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