同步操作将从 张彦强/easypermission 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
将其添加到根build.gradle中.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.gitee.zhang-yanqiang:easypermission:v2.0.15'
}
@Override
public void onCreate() {
super.onCreate();
//首次使用权限申请之前完成初始化,建议放在Application onCreate()中完成
EasyPermissionHelper.getInstance().init(this);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//使用EasyPermissionHelper注入回调
EasyPermissionHelper.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//使用EasyPermissionHelper注入回调
EasyPermissionHelper.getInstance().onActivityResult(requestCode, resultCode, data);
}
接下来看下怎么使用。
只需要调用EasyPermission的hasPermission方法,支持多个权限同时传入。
EasyPermission.build().hasPermission(Manifest.permission.CAMERA);
如果你在应用启动时需要申请权限,而且并不关注权限的结果,
只需要调用EasyPermission的requestPermission方法,支持多个权限传入。
EasyPermission.build().requestPermission(Manifest.permission.CAMERA);
EasyPermission.build()
.mRequestCode(RC_CODE_PERMISSION)
.mPerms(Manifest.permission.CAMERA)
.mResult(new EasyPermissionResult() {
@Override
public void onPermissionsAccess(int requestCode) {
super.onPermissionsAccess(requestCode);
//权限已通过
}
@Override
public void onPermissionsDismiss(int requestCode, @NonNull List<String> permissions) {
super.onPermissionsDismiss(requestCode, permissions);
//权限被拒绝
}
}).requestPermission();
easyPermission = EasyPermission.build()
.mRequestCode(RC_CODE_PERMISSION)
.mPerms(Manifest.permission.CAMERA)
.setAutoOpenAppDetails(true) //被拒绝并禁止时是否自动弹窗提醒,默认是true
.mAlertInfo( new PermissionAlertInfo("**需要申请摄像头权限",
"**需要申请摄像头拍摄权限,以便您能够通过扫一扫实现扫描二维码;通过拍照更换您帐号的头像;拍照上传一些注册帐号需要的证件信息。拒绝或取消授权将影响以上功能,不影响使用其他服务"))
.mResult(new EasyPermissionResult() {
@Override
public void onPermissionsAccess(int requestCode) {
super.onPermissionsAccess(requestCode);
//权限已通过
}
@Override
public void onPermissionsDismiss(int requestCode, @NonNull List<String> permissions) {
super.onPermissionsDismiss(requestCode, permissions);
//权限被拒绝
}
@Override
public boolean onDismissAsk(int requestCode, @NonNull List<String> permissions) {
//权限被拒绝并禁止再次询问
return super.onDismissAsk(requestCode,permissions);//这里true表示拦截处理,不再回调onPermissionsDismiss;
}
@Override
public void openAppDetails() {
//弹出默认的权限详情设置提示弹出框,在设置页完成允许操作后,会自动回调到onPermissionsAccess()
super.openAppDetails();
//如果样式不满意,可以弹出自定义明弹窗,在用户确认时调用 goToAppSettings();完成跳转设置页
}).requestPermission();
权限库用起来蛮方便的,但是弹窗的文字颜色需要改一下,又不像大动干戈地每次自己去写弹窗,能不能设置一下文字大小、颜色?没问题,咱们支持弹窗自定义样式。
EasyPermissionHelper.getInstance().setDialogStyle(new EasyAppSettingDialogStyle(EasyAppSettingDialogStyle.DialogStyle.STYLE_DEFAULT));
EasyPermissionHelper.getInstance().setDialogStyle(new EasyAppSettingDialogStyle(EasyAppSettingDialogStyle.DialogStyle.STYLE_SYSTEM));
EasyPermissionHelper.getInstance().setDialogStyle(
new EasyAppSettingDialogStyle(EasyAppSettingDialogStyle.DialogStyle.STYLE_CUSTOM)
.setTitleGravity(Gravity.CENTER)//设置居中
.setTitleSize(17)//设置标题样式
.setTitleColor("#333333")
.setMessageSize(14)//设置内容样式
.setMessageColor("#666666")
.setButtonTextSize(14)//设置按钮样式
.setButtonThemeColor("#FF0000")
.setCancelText("取消")//设置按钮文本
.setConfirmText("去打开"));
以上方式只需要在初始话后设置一次,全局生效。如果以上方式依然满足不了你胃口,那只能自己去控制弹窗拉。
在EasyPermissionResult中重写openAppDetails
@Override
public void openAppDetails() {
//在前往应用设置详情页展示自己的弹窗告知用户我们需要哪些权限打开
//在用户点击确认时调用easyPermission.goToAppSettings();完成跳转设置页
}
权限库用起来蛮方便的,但是顶部提示的背景颜色需要改一下,能不能设置一下文字大小、颜色、背景色?没问题,咱们支持顶部提示信息自定义样式。
EasyPermissionHelper.getInstance().setTopAlertStyle(
new EasyTopAlertStyle(EasyTopAlertStyle.AlertStyle.STYLE_DEFAULT));
EasyPermissionHelper.getInstance().setTopAlertStyle(
new EasyTopAlertStyle(EasyTopAlertStyle.AlertStyle.STYLE_CUSTOM)
.setTitleGravity(Gravity.LEFT)//默认居左
.setTitleSize(16)//设置标题样式,默认16sp
.setTitleColor("#333333")
.setMessageSize(14)//设置内容样式,默认14sp
.setMessageColor("#333333")
.setBackgroundColor("#FFFFFF")//设置背景色,默认白色
.setBackgroundRadius(8)//设置背景圆角弧度,默认8dp
.setBackgroundElevation(6)//设置背景阴影范围,默认6dp
.setTopMargin(10)//设置距离顶部标题栏间距,默认10dp
.setSideMargin(10));//设置距离屏幕两边宽度,默认10dp
EasyPermissionHelper.getInstance().updateTopActivity(mContext);
easyPermission.requestPermission();
easyPermission.mContext(mContext).requestPermission();
Android 9.0以后即使已经获得了用户授权定位权限,由于GPS定位服务未打开,依然获取不到定位,所以还需要对定位服务进行处理,LocationTool支持以下方法:
通知服务的权限在Android中也比较特殊,它不像其它权限那样去直接申请,像定位服务一样需要去系统设置中开启,所以也要去设置页:
悬浮窗权限在Android中也比较特殊,它不像其它权限那样去直接申请,像定位服务一样需要去系统设置中开启,所以也要去设置页:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。