Android APP啟動頁面動態加載全部權限


一、寫在前面

6.0以上動態加載權限加載的是,需要用戶手動賦予的權限( Dangerous Permissions),只有這些,其他權限不用加載

所屬權限組 權限
日歷 READ_CALENDAR
日歷 WRITE_CALENDAR
相機 CAMERA
聯系人 READ_CONTACTS
聯系人 WRITE_CONTACTS
聯系人 GET_ACCOUNTS
位置 ACCESS_FINE_LOCATION
位置 ACCESS_COARSE_LOCATION
麥克風 RECORD_AUDIO
電話 READ_PHONE_STATE
電話 CALL_PHONE
電話 READ_CALL_LOG
電話 WRITE_CALL_LOG
電話 ADD_VOICEMAIL
電話 USE_SIP
電話 PROCESS_OUTGOING_CALLS
傳感器 BODY_SENSORS
短信 SEND_SMS
短信 RECEIVE_SMS
短信 READ_SMS
短信 RECEIVE_WAP_PUSH
短信 RECEIVE_MMS
存儲 READ_EXTERNAL_STORAGE
存儲 WRITE_EXTERNAL_STORAGE

二、使用的框架RxPermissions2

build.gradle文件中
在dependencies {}中添加依賴
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

三、關鍵代碼
 1 /**
 2  * 權限列表
 3  */
 4 String[] permissions = new String[]{
 5         Manifest.permission.CAMERA,
 6         Manifest.permission.READ_PHONE_STATE,
 7         Manifest.permission.WRITE_EXTERNAL_STORAGE,
 8         Manifest.permission.READ_EXTERNAL_STORAGE
 9 };
10 
11 /**
12  * 請求權限
13  */
14 private void requestPermissions() {
15     RxPermissions rxPermission = new RxPermissions(this);
16     rxPermission
17             .request(permissions)//多個權限用","隔開
18             .subscribe(granted -> {
19                 if (granted) {
20                     //獲得了所有權限
21                    textView.setAnimation(animationSet);
22                 } else {
23                     //至少有一個權限沒有獲得
24                     Toast.makeText(SplashActivity.this,"請給應用賦予全部權限,否則無法使用",Toast.LENGTH_SHORT).show();
25                     finish();
26                 }
27             });
28 
29 }

四、該框架升級比較快,網上很多寫這個框架的博文都並不實用,還是要注意其github網站說明文檔

地址:https://github.com/tbruyelle/RxPermissions


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM