Android 運(yùn)行時(shí)權(quán)限

Android6.0以后Google不再允許開發(fā)者直接或許應(yīng)用的權(quán)限,需要在用戶知情的情況下授予權(quán)限,即需要用到權(quán)限的時(shí)候彈出一個(gè)權(quán)限提示框。

接下來我們將使用三種方式,完成運(yùn)行時(shí)權(quán)限的申請:

自己編寫代碼實(shí)現(xiàn),完全搞懂運(yùn)行時(shí)權(quán)限的申請。

使用Google官方簡化權(quán)限申請庫easypermissions實(shí)現(xiàn)。

使用結(jié)合RxJava的權(quán)限庫RxPermissions實(shí)現(xiàn)。

為了避免用戶沒有留意而拒絕了應(yīng)用的關(guān)鍵權(quán)限,我們必須對用戶授權(quán)時(shí)的各種狀態(tài)進(jìn)行詳細(xì)的分析。

用戶在授予權(quán)限時(shí)存在三種狀態(tài):

允許—授權(quán)成功,授權(quán)結(jié)束。

拒絕—授權(quán)失敗,下次申請仍會彈出提示框。如果權(quán)限是程序必須擁有的,則需要再次申請。

拒絕&不再詢問—拒絕一次后,下次會有該提示。若選擇拒絕并且不再詢問,下次申請則不會彈出提示框。如果權(quán)限是程序必須擁有的,則需要用戶到應(yīng)用管理中手動設(shè)置。


RxPermissions

結(jié)合RxJava的運(yùn)行時(shí)權(quán)限請求庫,必須結(jié)合RxJava使用,使用及其簡單。?

GitHub:https://github.com/tbruyelle/RxPermissions

1.添加

implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

implementation 'io.reactivex.rxjava2:rxjava:2.1.9'

2.使用


RxPermissions rxPermissions = new RxPermissions(MainActivity.this); rxPermissions.requestEach(mPermissions).subscribe(new Consumer() {

? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? public void accept(Permission permission) {

? ? ? ? ? ? ? ? ? ? ? ? Log.i(TAG, "accept: " + permission.toString());

? ? ? ? ? ? ? ? ? ? ? ? if (permission.granted) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? //權(quán)限獲取成功

? ? ? ? ? ? ? ? ? ? ? ? } else if (permission.shouldShowRequestPermissionRationale) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? //權(quán)限獲取失敗,但是沒有永久拒絕

? ? ? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? ? ? //權(quán)限獲取失敗,而且被永久拒絕

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? });

3.總結(jié)

使用及其簡單,方便,代碼少。

只會申請沒有獲取的權(quán)限,無須篩選就不會重復(fù)獲取權(quán)限。

必須同時(shí)添加RxJava庫,必須先學(xué)習(xí)使用RxJava,使用成本偏高。

可以直接綁定點(diǎn)擊事件,使用場景更加豐富。

更多請看GitHub文檔https://github.com/tbruyelle/RxPermissions。


轉(zhuǎn)自:Android7.0運(yùn)行時(shí)權(quán)限的解決方案 - CSDN博客? ??

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

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

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