【发布时间】:2016-06-15 07:46:42
【问题描述】:
在安装了最新的 Android Marshmallow 更新 - 即June2016 更新的设备上,当我请求权限时,ALLOW 按钮不起作用。
我已经用这两种设备进行了测试:
Nexus 6p(Andoid 版本 - 6.0.1,内部版本号 - MTC19V)
Nexus 7(Android 版本 6.0.1,内部版本号 - MOB30M)
两者都有最新更新,当我请求权限时,会显示对话框,但我无法按下 ALLOW 按钮。
这是我用来请求权限的代码:
public void showPermissionsDialog() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int hasWriteExternalStoragePermission = activity.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
int hasWriteGetAccountsPermission = activity.checkSelfPermission(android.Manifest.permission.GET_ACCOUNTS);
if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED || hasWriteGetAccountsPermission != PackageManager.PERMISSION_GRANTED) {
activity.requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.GET_ACCOUNTS}, MainActivity.REQUEST_CODE_ASK_PERMISSIONS);
} else {
isAllPermissionsGranted = true;
}
} else {
isAllPermissionsGranted = true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CODE_ASK_PERMISSIONS) {
if (grantResults.length > 0) {
boolean isAllPermissionsGranted = true;
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
isAllPermissionsGranted = false;
}
}
if (isAllPermissionsGranted) {
this.isAllPermissionsGranted = true;
} else {
android.widget.Toast.makeText(this, "Please, grand permissions", android.widget.Toast.LENGTH_LONG).show();
showPermissionsDialog();
}
}
}
}
关于如何解决此问题的任何建议?提前致谢!
编辑
Here 是给 Google 的错误报告。我们仍在等待 Google 的修复。
编辑 1
此问题已修复!
【问题讨论】:
-
你覆盖了 onRequestPermissionsResult 吗??
-
是的,当然...我会添加代码
-
我刚刚更新了操作系统,直到早上同一组代码工作正常,更新后我不要点击允许按钮。如果您找到任何解决方案,请告诉我?
-
@Vivek 我一定会的。到目前为止,我已经找到了这个code.google.com/p/android/issues/detail?id=213120
-
@hakobyanheghine 我认为 Android 团队中的某个人搞砸了......我遇到了同样的问题,允许按钮停止工作,并且它一直在为飞蛾工作并继续工作的相同代码在以前的版本中...我今天早上刚刚更新了我的 nexus 6,现在无法正常工作 xD
标签: android permissions android-6.0-marshmallow