如何一个接一个请求多个权限?

Alw*_*sed 7 android android-permissions

我的应用程序需要访问CAMERAWRITE_EXTERNAL_STORAGE权限。

一旦我的应用程序加载,我想要求用户一个接一个地允许这两种权限。我有这个代码:

    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
    }


    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1);

    }
Run Code Online (Sandbox Code Playgroud)

现在一旦我的应用程序加载它会要求第一个权限,但在我再次重新加载整个应用程序之前不会要求第二个权限。

应用程序加载后,如何向用户询问这两个权限?

0X0*_*gar 5

您必须将所有权限放入一个String数组中:

new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}
Run Code Online (Sandbox Code Playgroud)

这样,用户将看到一个包含所有权限的对话框,他们可以决定单独拒绝或授予每个权限。一旦它们完成,您Activity将被调用onRequestPermissionsResult()

此方法的参数之一是int名为grantResults的类型的数组,您可以对其进行评估以了解授予了哪些权限。