开始导入
compile 'pub.devrel:easypermissions:0.4.0'
需要在 Activity
或者 Fragment
中实现EasyPermissions.PermissionCallbacks
接口
@AfterPermissionGranted(PER_LOACTION) public void handleLogin() { if (EasyPermissions.hasPermissions(this, PERMS_LOACTION_STATE)) { //获取定位 // mLocationClient.start(); } else { // Ask for one permission EasyPermissions.requestPermissions(this, getString(R.string.req_phone_state), PER_LOACTION, PERMS_LOACTION_STATE); }
hasPermissions 是检查app是否已经拥有此权限 如有则执行相应代码,如没有则调用requestPermissions 去申请权限 。
hasPermissions()第一个参数 : Context参数.例如,Activity对象。第二个参数 : 一些系列的权限
requestPermissions()第一个参数:Context对象。第二个参数:权限弹窗上的文字提示语。告诉用户,这个权限用途。第三个参数:这次请求权限的唯一标示,code。第四个参数 : 一些系列的权限。
public class PermissionManifest { /*发短信权限*/ public final static int PER_SMS = 0X001; public final static String[] PERMS_SMS = {Manifest.permission.SEND_SMS}; /*打电话权限*/ public final static int PER_CALL = 0X002; public final static String[] PREMS_CALL = {Manifest.permission.CALL_PHONE}; /*定位权限*/ public final static int PER_LOACTION = 0X003; public final static String[] PERMS_LOACTION_STATE = {Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION};
//需要在本身的权限回调方法中将处理结果交由EasyPermission处理需要在本身的权限回调方法中将处理结果交由EasyPermission处理
@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) { if (requestCode == PER_LOACTION) { // 获取权限成功 // 获取定位 mLocationClient.start() ; }} @Override public void onPermissionsDenied( int requestCode , List<String> perms) { if (requestCode == PER_LOACTION) { // 获取权限失败 GlobalUtil. showToast(getString(R.string. read_phone_state_refuse)) ; }}