EasyPermission的简单使用
概述
- 对于6.0以上的系统,权限分为普通权限和运行时权限,运行时权限,除了在清单文件需要声明以外,还要在运行的时候进行动态申请,而普通的权限是不需要重新申请的
- 权限是分为一组组的,对于一组权限而言,申请了一个权限,就拥有一组权限,而无需重复申请
- 对与EasyPermisson的简单使用概要
权限组
group:android.permission-group.CONTACTS
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
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
权限的申请
- 原理 : 可以获得应用已经获得的权限,然后对比需要用到的权限,比较有没有这个权限
- 2.
public void onCall(String mobile){
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission = ContextCompat.checkSelfPermission(mContext,Manifest.permission.CALL_PHONE);
if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(mContext,new String[]{Manifest.permission.CALL_PHONE},REQUEST_CODE_ASK_CALL_PHONE);
return;
}else{
callDirectly(mobile);
}
} else {
callDirectly(mobile);
}
}
- EasyPermisson 就是将这个方法进行封装,使用更加简单
正文EasyPermisson 的使用
@AfterPermissionGranted(RC_CAMERA_PERM)
public void startTask(View view){
if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA)) {
Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show();
} else {
EasyPermissions.requestPermissions(this, "申请手机照相的权限",
RC_CAMERA_PERM, Manifest.permission.CAMERA);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
Log.d(TAG, "onPermissionsGranted:" + requestCode + ":" + perms.size());
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
Log.d(TAG, "onPermissionsDenied:" + requestCode + ":" + perms.size());
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
Toast.makeText(this,perms.toString(),Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this,perms.toString(),Toast.LENGTH_LONG).show();
}
}