【发布时间】:2017-06-21 15:21:19
【问题描述】:
我的应用程序需要 5 个权限。这是我添加到我的 1 个活动的 onCreate() 中的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 2);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.CAMERA}, 3);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.GET_ACCOUNTS}, 4);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.READ_CONTACTS}, 5);
}
}
当应用程序运行时,它只请求第一个权限,而不是剩余的。 我还将所有权限作为数组提供给请求权限函数,但我也只看到第一个权限弹出窗口。
有人可以帮忙吗?我在 Android M 设备上运行我的应用程序,我的目标和编译 sdk 版本是 26。
【问题讨论】:
-
调用
requestPermissions()一次,只需一个String[]即可获得所需的所有权限。自定义String[]以仅具有您需要的权限,而不是用户已经授予的权限。见this sample app。 -
已经试过了,发现同样的问题,我在问题中提到过
-
那么也许你做错了,或者你已经拥有其他权限(因此不需要它们)。同样,请参阅 this sample app 或 this sample app,其中我毫无问题地请求了多个权限。
标签: android android-6.0-marshmallow android-permissions