Android M 6.0權(quán)限

標(biāo)簽(空格分隔): Android


[ANdroid 6.0基礎(chǔ)知識][3]

1、在 Android 的各個版本中,不論是普通權(quán)限還是敏感權(quán)限(運行時權(quán)限),都需要在 manifest 文件中聲明

2、關(guān)于解釋需要權(quán)限的原因可以看一下這篇[博客][1],而且這篇博客對權(quán)限組的授權(quán)改變、用戶勾選不再提醒對話框時,下次不再彈對話框來授予權(quán)限時的情況考慮的比較詳細
Android 系統(tǒng)提供了shouldShowRequestPermissionRationale()方法來幫助開發(fā)者判斷是否需要向用戶解釋需要權(quán)限的原因。當(dāng)某條權(quán)限之前已經(jīng)請求過,并且用戶已經(jīng)拒絕了該權(quán)限時,shouldShowRequestPermissionRationale ()方法返回的是 true
如果app之前請求過該權(quán)限,被用戶拒絕, 這個方法就會返回true.
如果用戶之前拒絕權(quán)限的時候勾選了對話框中”Don’t ask again”的選項,那么這個方法會返回false.
如果設(shè)備策略禁止應(yīng)用擁有這條權(quán)限, 這個方法也返回false.


參考文章:[鏈接][2]
系統(tǒng)自動回調(diào)的情況:
有一些情形下,調(diào)用
1.自動授權(quán): 如果用戶已經(jīng)允許了permission group中的一條A權(quán)限,那么當(dāng)下次調(diào)用requestPermissions()方法請求同一個group中的B權(quán)限時, 系統(tǒng)會直接調(diào)用onRequestPermissionsResult() 回調(diào)方法, 并傳回PERMISSION_GRANTED的結(jié)果.
2.自動拒絕: 如果用戶選擇了不再詢問此條權(quán)限,那么app再次調(diào)用requestPermissions()方法來請求同一條權(quán)限的時候,系統(tǒng)會直接調(diào)用onRequestPermissionsResult()回調(diào),返回PERMISSION_DENIED.

經(jīng)驗證, 請求權(quán)限對話框中的”Don’t ask again”的選項, 只有該條權(quán)限之前的狀態(tài)是Denied的時候,才會出現(xiàn).
以前從未授權(quán)(即第一次彈框), 或者之前的狀態(tài)是Granted(當(dāng)然這種情況一般不會彈框詢問), 出現(xiàn)的彈框都是不帶該不再詢問的選項的.


參考[實踐文章一][4]、[實踐文章二][5]

[一行代碼解決Android M新的運行時權(quán)限問題][6]

建議在短期內(nèi)暫時可以不考慮支持該運行時權(quán)限機制,等時機成熟或者簡單易用的第三方庫完善之后再支持也未嘗不可。
[1]: https://kingideayou.github.io/2015/11/09/Android_M_permissions/
[2]: http://www.cnblogs.com/mengdd/p/4892856.html
[3]: https://blog.coding.net/blog/understanding-marshmallow-runtime-permission
[4]: http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/
[5]: https://yanlu.me/android-m6-0-permission-chasm/
[6]: http://www.itdecent.cn/p/d3a998ec04ad

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容