我的应用程序中有10个权限,我可以逐个提示。但是一旦提示给用户我想要10个权限,以便他可以接受应用程序启动的权限。
提前致谢
答案 0 :(得分:1)
persistUniqueKeys
将一个字符串数组作为第一个参数,所以......
requestPermissions
但是...
运行时权限的重点是用户在您的应用确实需要它们之前不需要授予它们。
答案 1 :(得分:0)
您可以这种方式一起提出多个权限:
(我目前正在使用它)
String[] PERMISSIONS_ARRAY = {Manifest.permission.X, Manifest.permission.Y, Manifest.permission.Z};
然后我有一个功能:
void checkRuntimePermissions(){
if ((ActivityCompat.checkSelfPermission(this, Manifest.permission.X)
!= PackageManager.PERMISSION_GRANTED) && ActivityCompat.checkSelfPermission ...) {
//modify the array acc to permission granted or not
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.X) && ActivityCompat.shouldShowRequestPermissionRationale...{
ActivityCompat.requestPermissions(Activity.this, PERMISSIONS_ARRAY,
REQUEST_CODE_PERMISSIONS);
} ..}
并通过实施ActivityCompat.OnRequestPermissionsResultCallback ...
验证请求@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CODE_PERMISSIONS) {
// if we have requested multiple permissions, all of them need to be
// checked.
if (PermissionUtil.verifyPermissions(grantResults)) {...
我希望我们能从o.s.获得自动检查。在调用requestPermissions...
时,我们不必检查是否允许该权限。
答案 2 :(得分:-1)
我已经创建了一个运行时权限助手,它可以完全满足您的需求。 你可以在这里找到它 - https://gist.github.com/passiondroid/cd2ad32e7ba26f4e47ae
添加此类并根据您的权限进行修改。您可以在活动中添加以下代码,您需要询问所有权限
runtimePermissionHelper = RuntimePermissionHelper.getInstance(this);
if (runtimePermissionHelper.isAllMCPermissionAvailable()) {
//All permissions available. Do what you want.
} else {
runtimePermissionHelper.setActivity(this);
runtimePermissionHelper.requestPermissionsIfDenied();
}
在同一活动中覆盖此方法,以便在用户接受/拒绝权限后获得回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Map<String, Integer> perms = new HashMap<String, Integer>();
// Fill with results*/
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
boolean isAllPermissionsAllowed = false;
for(int i : grantResults){
if(i==PackageManager.PERMISSION_GRANTED){
isAllPermissionsAllowed = true;
}else{
isAllPermissionsAllowed = false;
break;
}
}
if(isAllPermissionsAllowed){
//All permissions available. Do what you want.
} else {
// Permission Denied. Show error page
Intent intent = new Intent(this,ErrorActivity.class);
intent.putExtra("permissions_denied",true);
startActivity(intent);
finish();
}
}