Android6.0权限获取方法封装
2018-03-20 17:49
417 查看
项目中很多操作需要事先进行危险权限的判断和获取,本人在Android项目开发中封装了一个获取Android6.0以上系统危险权限的获取的方法,希望能给大家带来帮助。
首先定义一个接口,里面有两个方法。
然后,定义一个activity基类,可供需要工程中的activity继承。
后面可以在需要的地方随意调用了,比如:
首先定义一个接口,里面有两个方法。
public interface AccreditListener { void onAccreditSucceed(); //权限获取成功 void onAccreditFailure(); //权限获取失败 }
然后,定义一个activity基类,可供需要工程中的activity继承。
public class AppBaseActivity extends AppCompatActivity { public int mRequestCode; public int mPermissionRequestCount; private AccreditListener mAccreditListener; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... } /** * android6.0权限处理 * * @param context * @param permissionNames * @param requestCode */ public void requestPermission(Context context, String[] permissionNames, int requestCode, AccreditListener accreditListener) { if (permissionNames == null || permissionNames.length < 1) { return; } mRequestCode = requestCode; mPermissionRequestCount = permissionNames.length; mAccreditListener = accreditListener; boolean isPermitted = true; for (String permissionName : permissionNames) { if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(context, permissionName)) { isPermitted 4000 = false; } } if (isPermitted) { mAccreditListener.onAccreditSucceed(); } else { ActivityCompat.requestPermissions((Activity) context, permissionNames, requestCode); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == mRequestCode && mPermissionRequestCount > 0) { boolean isPermitted = true; for (int i = 0; i < mPermissionRequestCount; i++) { if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { isPermitted = false; } } if (isPermitted) { mAccreditListener.onAccreditSucceed(); } else { mAccreditListener.onAccreditFailure(); } } }
后面可以在需要的地方随意调用了,比如:
mMicrophone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { requestPermission( ContactSearchActivity.this, new String[]{ Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0x11, new AccreditListener() { @Override public void onAccreditSucceed() { Log.i(TAG,"权限获取成功!"); } @Override public void onAccreditFailure() { Log.i(TAG,"权限获取失败!"); } }); } });
相关文章推荐
- Android6.0以上系统权限提示获取方法
- Android6.0(棉花糖)以上动态获取权限方法
- Android6.0获取GPS定位和获取位置权限和位置信息的方法
- android6.0以上获取权限简单封装
- Android6.0运行时权限封装(避免用户选择不再提示后无法获取权限的问题)
- android6.0运行时权限完美封装方法
- 关于扫描二维码拒绝获取摄像头权限导致的错误解决方法
- 封装getByClass(JS获取class的方法封装为一个函数)
- mvc通过反射获取action方法(适用于权限控制)
- 获取webshell权限的45种方法
- 安卓Android6.0权限动态获取操作示例
- 封装getByClass(JS获取class的方法封装为一个函数)
- iOS_Pass iOS10获取相册权限崩溃crash解决方法
- Android6.0获取运行时权限
- 获取当前控制器,封装方法可直接调用
- delphi 软件自动获取管理员权限方法
- Android6.0运行时权限解析,RxPermissions的使用,自己封装一套权限框架
- WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法
- 使用DOM的方法获取所有li元素,然后使用jQuery()构造函数把它封装为jQuery对象
- 一键root手机,快速获取权限的方法