你安装app提示一系列申请权限弹窗是什么感受?并且不同意就不能使用app,是不是太不友好了?如果能在使用时去请求权限是不是很实用?
还在为 ActivityCompat.shouldShowRequestPermissionRationale(Activity, String) 无法弹出权限申请对话框困惑么?
这里主要介绍permission4m的使用、注意事项:
step 1:引入依赖
project 中的 adle:
buildscript {
// ...
}
allprojects {
repositories {
// 请添加如下一行
maven { url '' }
}
}
strp 2:app 中的 adle:
dependencies {
compile 'com.github.jokermonn:permissions4m:2.1.2-lib'
annotationProcessor 'com.github.jokermonn:permissions4m:2.1.2-processor'
}
step 3:调用
<(MainActivity.this)// 是否强制弹出权限申请对话框,建议为 true,默认为 true// .requestForce(true)// 是否支持 5.0 权限申请,默认为 false// .requestUnderM(false)// 权限.requestPermissions(Manifest.permission.READ_CONTACTS)// 权限码.requestCodes(READ_CONTACTS_CODE)// 权限请求结果.requestListener(new Wrapper.PermissionRequestListener() {@Overridepublic void permissionGranted(int code) {ToastUtil.show("读取通讯录权限成功 in activity with listener");}@Overridepublic void permissionDenied(int code) {ToastUtil.show("读取通讯录权失败 in activity with listener");}@Overridepublic void permissionRationale(int code) {ToastUtil.show("请打开读取通讯录权限 in activity with listener");}})// 二次请求时回调.requestCustomRationaleListener(new Wrapper.PermissionCustomRationaleListener() {@Overridepublic void permissionCustomRationale(int code) {new AlertDialog.Builder(getActivity()).setMessage("通讯录权限申请:n我们需要您开启通讯录权限(in fragment with annotation)").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {(NormalFragment.this).requestOnRationale().requestPermissions(Manifest.permission.READ_PHONE_STATE).requestCodes(PHONE_STATE_CODE).request();}}).show();}})// 权限完全被禁时回调函数中返回 intent 类型(手机管家界面).requestPageType(Permissions4M.PageType.MANAGER_PAGE)// 权限完全被禁时回调函数中返回 intent 类型(系统设置界面)//.requestPageType(Permissions4M.PageType.ANDROID_SETTING_PAGE)// 权限完全被禁时回调,接口函数中的参数 Intent 是由上一行决定的.requestPage(new Wrapper.PermissionPageListener() {@Overridepublic void pageIntent(final Intent intent) {new AlertDialog.Builder(MainActivity.this).setMessage("读取通讯录权限申请:n我们需要您开启读取通讯录权限(in activity with listener)").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {startActivity(intent);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.cancel();}}).show();}}).request();
step 4:注意事项,必加
必加的二次权限申请回调
在 Activity 或 Fragment 中,需要手动添加 onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) 方法以支持权限申请回调,代码如下即可:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[]grantResults) {RequestPermissionsResult(MainFragment.this, requestCode, grantResults);RequestPermissionsResult(requestCode, permissions, grantResults);
}
完成了;
具体请参考:
本文发布于:2024-02-01 17:25:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170678076138258.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |