最近自己前几文章中封装了个动态权限工具类,不过我看了下环信源码,好像比我写的好。集成了我本身的 提示和跳转权限的功能
1.检测权限及其回答
2.拒绝后的dialog提示
3.再次访问拒绝跳转到系统的权限设置
方便用户直接跳转的权限 使用的时候3个java文件直接丢到自己项目中去,然后注意修改一下import就行
//使用方式
PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult(this, permission, new PermissionsResultAction() {
@Override
public void onGranted() {
//确定权限已到位 开始执行需要执行的方法
}
@Override
public void onDenied(String permission) {
//给个简单的dialog提示拒绝会导致什么无法使用
AlertDialog dialog = new AlertDialog.Builder(BaseActivity.this)
.setMessage("该功能需要赋予访问存储的权限,不开启将无法正常工作!")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getAppDetailSettingIntent(BaseActivity.this);//直接跳转到该app的权限设置界面 方便用户操作
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create();
dialog.show();
}
});
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//用户接收或者拒绝后 刷新
PermissionsManager.getInstance().notifyPermissionsChange(permissions, grantResults);
}
/**
* 直接跳转到该app的权限设置界面 方便用户操作
*/
public void getAppDetailSettingIntent(Context context) {
// vivo 点击设置图标>加速白名单>我的app
// 点击软件管理>软件管理权限>软件>我的app>信任该软件
Intent appIntent = context.getPackageManager().getLaunchIntentForPackage("com.iqoo.secure");
if (appIntent != null) {
context.startActivity(appIntent);
// floatingView = new SettingFloatingView(this, "SETTING", getApplication(), 0);
// floatingView.createFloatingView();
return;
}
// oppo 点击设置图标>应用权限管理>按应用程序管理>我的app>我信任该应用
// 点击权限隐私>自启动管理>我的app
appIntent = context.getPackageManager().getLaunchIntentForPackage("com.oppo.safe");
if (appIntent != null) {
context.startActivity(appIntent);
// floatingView = new SettingFloatingView(this, "SETTING", getApplication(), 1);
// floatingView.createFloatingView();
return;
}
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
startActivity(intent);
}