1. 程式人生 > >Android APP啟動頁面動態加載全部權限

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

uil ted spl count 文件中 nta proc contact 代碼

一、寫在前面

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

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