Android 6.0多重权限
我知道Android 6.0具有新的权限,我知道可以使用类似这样的名称
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_WRITE_STORAGE);
}
今天,我看到了一个需要3个权限的Google应用:联系人,短信和摄像头。它正在制作第1-3页,并同时将它们一起调用以激活。
有人可以告诉我如何调用4个权限来同时激活短信,摄像头,联系人和存储吗?
示例(忘记了Google应用的名称:()
该应用需要短信,联系人和相机
该应用程序问我(并在第1-3页建立了对话框)激活短信,激活通讯录,然后激活相机。所以这个谷歌应用程序一起调用了所有3个必需的权限,我的问题是我怎么能达到相同的权限?
回答:
只需在ActivityCompat.requestPermissions(...)
通话中包含所有4个权限,Android就会像你提到的那样自动将它们分页。
我有一个帮助程序方法来检查多个权限,看看是否其中的任何一个都不被授予。
public static boolean hasPermissions(Context context, String... permissions) { if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
Or in Kotlin:
fun hasPermissions(context: Context, vararg permissions: String): Boolean = permissions.all { ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
然后,只需发送所有权限即可。Android只会询问需要的东西。
// The request code used in ActivityCompat.requestPermissions()// and returned in the Activity's onRequestPermissionsResult()
int PERMISSION_ALL = 1;
String[] PERMISSIONS = {
android.Manifest.permission.READ_CONTACTS,
android.Manifest.permission.WRITE_CONTACTS,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
android.Manifest.permission.READ_SMS,
android.Manifest.permission.CAMERA
};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
以上是 Android 6.0多重权限 的全部内容, 来源链接: utcz.com/qa/407011.html