前提:
android6.0以上 并且tragetVersion >22的時候需要主動去做權(quán)限管理
基于RxPermission1.0 & RxJava 1.0
RxPermission 1.0: https://github.com/tbruyelle/RxPermissions
rxjava 1.0 :https://github.com/ReactiveX/RxJava/tree/1.x
兩個都必須要導(dǎo)入茧跋,否則找不到類挤土。
package com.zy.demo;
import android.Manifest;
import android.app.Activity;
import android.util.Log;
import com.tbruyelle.rxpermissions.Permission;
import com.tbruyelle.rxpermissions.RxPermissions;
import rx.functions.Action1;
/**
* @author luchao
* @time 18/6/28 上午10:43
*/
/**
* danger permission danger permission 這些是必須要要去主動獲取的
* group:android.permission-group.CONTACTS(聯(lián)系人)
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE(電話)
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR(日歷)
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA(相機)
permission:android.permission.CAMERA
group:android.permission-group.SENSORS(傳感器)
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION(位置)
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE(存儲卡)
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE(麥克風(fēng))
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS(短信)
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
*/
public class PermissionsUtil {
private static final String TAG = "TT";
/**
* 初始化的時候使用荷腊,請求固定的權(quán)限列表
* @param activity
*/
public static void requestPermissionList(Activity activity) {
new RxPermissions(activity)
.requestEach(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE
).subscribe(new Action1<Permission>() {
@Override
public void call(Permission permission) {
if(permission.granted){
Log.d(TAG, "has permission1111");
}else{
Log.d(TAG, "no permission2222");
}
}
});
}
/**
* 當(dāng)調(diào)用某個放法澎嚣,如打開相機的時候,如果之前沒有授權(quán)涣仿,需要再次獲取權(quán)限余舶,然后產(chǎn)生回調(diào)塘装。
* @param activity
*/
public static void requestPermissionSingle(Activity activity, String permission, Action1<Permission>action1) {
new RxPermissions(activity)
.requestEach(permission
).subscribe(action1);
}
/**
* 當(dāng)調(diào)用某個放法,如獲取deviceId時候备图,如果之前沒有授權(quán)灿巧,需要再次獲取權(quán)限,不需要回調(diào)揽涮。
* @param activity
*/
public static void requestPermissionSingle(Activity activity, String permission) {
new RxPermissions(activity)
.request(permission
).subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean isPermission) {
}
});
}
}