BaseActivity中封装权限动态适配
来源:互联网 发布:中国经济史图书知乎 编辑:程序博客网 时间:2024/06/03 21:59
场景
安卓6.0以上需动态适配权限(有些机型5.0以上需动态适配)。每Activity中写大量代码显繁杂,故将该部分封装在BaseActivity中。
用法
BaseActivity
/*权限响应码*/protected static final int REQUEST_STORAGE_READ_ACCESS_PERMISSION = 101;protected static final int REQUEST_CAMERA_PERMISSION = 102;/*对话框*/private AlertDialog alertDialog;/*** Requests given permission.* If the permission has been denied previously, a Dialog will prompt the user to grant the permission, otherwise it is requested directly.*/protected void requestPermission(final String permission, String rationale, final int requestCode) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) { showAlertDialog(getString(R.string.permission_title_rationale), rationale, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions(BaseActivity.this, new String[]{permission}, requestCode); } }, getString(R.string.ensure), null, getString(R.string.cancel)); } else { ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode); }}/*** This method shows dialog with given title & message.* Also there is an option to pass onClickListener for positive & negative button.** @param title - dialog title* @param message - dialog message* @param onPositiveButtonClickListener - listener for positive button* @param positiveText - positive button text* @param onNegativeButtonClickListener - listener for negative button* @param negativeText - negative button text*/protected void showAlertDialog(@Nullable String title, @Nullable String message, @Nullable DialogInterface.OnClickListener onPositiveButtonClickListener, @NonNull String positiveText, @Nullable DialogInterface.OnClickListener onNegativeButtonClickListener, @NonNull String negativeText) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(title); builder.setMessage(message); builder.setPositiveButton(positiveText, onPositiveButtonClickListener); builder.setNegativeButton(negativeText, onNegativeButtonClickListener); alertDialog = builder.show();}
资源文件
<string name="permission_write_storage_rationale">设备需要写权限访问照片</string>
其它Activity
/*** 从相册选择*/private void pickFromGallery() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermission(Manifest.permission.READ_EXTERNAL_STORAGE, getString(R.string.permission_read_storage_rationale), REQUEST_STORAGE_READ_ACCESS_PERMISSION); } else { startActivityForResult(pickIntent, GALLERY_REQUEST_CODE); }}/*** Callback received when a permissions request has been completed.*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case REQUEST_STORAGE_READ_ACCESS_PERMISSION: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { pickFromGallery(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); }}
阅读全文
0 0
- BaseActivity中封装权限动态适配
- Android实战二:动态权限的BaseActivity封装
- 基于baseActivity的6.0权限封装
- BaseActivity封装
- BaseActivity封装
- BaseActivity封装
- 封装BaseActivity
- BaseActivity中封装通用的Toolbar
- BaseActivity中标题栏TitleBar的封装
- BaseActivity中封装通用的Toolbar
- Android 6.0运行时权限 baseactivity简单封装
- Android 运行时权限处理封装在 BaseActivity 中,方便业务申请时只需要简单的 1,2 行代码即可成功处理权限申请
- BaseActivity基本封装
- baseactivity实现封装toolbar
- BaseActivity的简单封装
- BaseActivity封装固定控件
- BaseActivity基类封装
- BaseActivity和BaseFragment封装
- Java工程师面试必看
- 神经网络中优化器的作用
- iOS11 Xcode 9 快速跳转到定义新姿势(Jump to Definition)
- JS 数组模糊搜索
- HDU1097
- BaseActivity中封装权限动态适配
- 《deep learning》学习笔记(4)——数值计算
- 在MAC OSX10.10上安装OpenCV2.4.10全过程(含Homwbrew,cmake安装,在XCode6.1.1上配置OpenCV2.4.10)
- getopt----解析命令选项及参数
- 第四周项目一
- 第七章 接口
- Oracle---number数据类型
- SpringMVC中的参数绑定总结
- JS 计算当前浏览器的滚动条宽度