在这里推荐一个扔物线的自定义View的教程
用Kotlin编写的项目发现Dispatcher不能用..
上次编写的工具类缺陷太大…
So…又封装了一个.这次的真的是好多了.
用法 :
- 需要继承PermissionActivity类
- 单个请求用applyPermission()
- 多个请求用applyPermissionArray()
具体看代码 :
1.单个请求(以相机权限为例)
/**
* 单权限申请
* @param callback为回调,检测是否被用户同意或者是否被拒绝以及是否需要授权
* @param int permissionCode 为要申请权限代码 在PermissionConstant中有声明
*/
applyPermission(new PermissionCallBack() {
@Override
public void onCameraPermissionSuccess() {
Log.i(TAG, "onCameraPermissionSuccess: ");
}
@Override
public void onCameraPermissionFailure() {
Log.i(TAG, "onCameraPermissionFailure: ");
}
@Override
public void onNoNeedPermissionApply() {
Log.i(TAG, "onNoNeedPermissionApply: ");
}
}, PermissionConstant.PERMISSION_CODE_CAMERA);
2.一组权限申请
/**
* 组权限申请
* @param callback为回调,检测是否某权限被用户同意或者是否被拒绝以及是否需要授权
* @param String[] permissions 为要申请权限
*/
applyPermissionArray(new PermissionCallBack() {
@Override
public void onGroupPermissionSuccess(String permissionName) {
Log.i(TAG, "onGroupPermissionSuccess: " + permissionName);
}
@Override
public void onGroupPermissionFailure(String permissionName) {
Log.i(TAG, "onGroupPermissionFailure: " + permissionName);
}
@Override
public void onNoNeedPermissionApply() {
Log.i(TAG, "onNoNeedPermissionApply: ");
}
}, new String[]{Manifest.permission.READ_CALENDAR,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_CONTACTS});
使用方式 : 暂时只能将代码Copy进项目中,JikPack暂时上传失败
代码地址 : https://github.com/RedWolfChao/RedPermission
注意事项 :
PermissionCallback是一个静态类,所以要重写其中方法的时候不需要全部重写,坏处也是重写方法的时候需要自己选择要重写的方法,选择方式为 :
- 单个权限 : 重写onNoNeedPermissionApply 以及onXXXSuccess和onXXXFailure
- 一组权限 : 重写onNoNeedPermissionApply 以及onGroupPermissionSuccess和onGroupPermissionSuccess
其它
Android一共有9组24个危险权限需要申请,每组中用户同意一个,其它的也跟带着会被同意
联系人权限
android.permission.WRITE_CONTACTS
android.permission.GET_ACCOUNTS
android.permission.READ_CONTACTS
电话权限
android.permission.READ_CALL_LOG
android.permission.READ_PHONE_STATE
android.permission.CALL_PHONE
android.permission.WRITE_CALL_LOG
android.permission.USE_SIP
android.permission.PROCESS_OUTGOING_CALLS
com.android.voicemail.permission.ADD_VOICEMAIL
日历权限
android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR
相机权限
android.permission.CAMERA
传感器权限
android.permission.BODY_SENSORS
定位权限
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
储存器权限
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
麦克风权限
android.permission.RECORD_AUDIO
短信权限
android.permission.READ_SMS
android.permission.RECEIVE_WAP_PUSH
android.permission.RECEIVE_MMS
android.permission.RECEIVE_SMS
android.permission.SEND_SMS
具体可看官方文档
https://developer.android.com/reference/android/Manifest.permission_group.html