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

回到顶部