Android M权限对话框未显示

Jen*_*ens 68 permissions android android-6.0-marshmallow

我目前正在尝试将我的应用程序调整为Android M的新权限模型.

我正在收集我需要的所有权限,然后运行

Log.i("Permissions", "Requesting permissions: " + permissions);
requestPermissions(requiredPermissions.toArray(new String[requiredPermissions.size()]), requestCodeForPermissions);
Run Code Online (Sandbox Code Playgroud)

requiredPermissions拥有我需要的权限android.permission.WRITE_EXTERNAL_STORAGE.

该例程肯定是执行的,因为我在logcat中有Log行:

08-07 12:52:46.469: I/Permissions(1674): Requesting permissions: android.permission.RECEIVE_BOOT_COMPLETED; android.permission.WRITE_EXTERNAL_STORAGE
Run Code Online (Sandbox Code Playgroud)

但是权限对话框从不显示,更不用说调用onRequestPermissionsResult()了.

我究竟做错了什么?基于一些教程,我发现我没有遗漏任何东西.我只有用于测试的模拟器,没有物理设备.这是关于设置的屏幕: 图像

可能值得一提的是:如果我尝试从主屏幕打开已安装应用程序的概述,我只会得到launcher3 has exited.我不确定这可能是相关的.

有没有人知道它为什么没有显示?

Tam*_*seh 107

我遇到了同样的问题,但后来我意识到我忘了将权限添加到清单文件中.添加uses-permission标记后,系统显示对话框.也许帮助某人.

  • pfff.wasted差不多2小时,直到这篇文章(在清单中是代码fine_location中的coarse_location).... (13认同)
  • 太棒了!快速开发就是问题所在!您会错过基本知识。谢谢! (3认同)
  • 但它没有修复,因为我也使用tabhost,当你想显示permissin对话框时,这可能也是问题,[发现这篇文章](http://stackoverflow.com/a/37142595/5528870) (2认同)

Kha*_*.NT 24

我花了一整天时间才找出导致问题的原因.在原来的答案帮助了我.

我通过添加tools:remove="android:maxSdkVersion"如下修复:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:remove="android:maxSdkVersion"/>
Run Code Online (Sandbox Code Playgroud)


sha*_*han 13

我遇到了同样的问题,因为我使用负值作为REQUEST_CODE.

requestPermissions(new String[]{android.Manifest.permission.CAMERA}, -1)
Run Code Online (Sandbox Code Playgroud)

使用正值后,系统显示对话框.希望它可以帮助某人.


Jen*_*ens 10

基于Hilal的评论(非常感谢!):在我的情况下,我的应用程序确实使用了tabhost,并且从tabhost中的Activity请求了权限.启动一个请求权限的单独活动后,它正在运行.


Vin*_*ran 9

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中

注意:您想要获得的权限.例如:android.permission.ACCESS_FINE_LOCATION等.


サソリ*_*サソリ 9

我刚遇到同样的问题.我的问题是我在清单中的错误位置写了许可.确保使用权限不在应用程序中:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms.samples.vision.face.photo"
    android:installLocation="auto"
    android:versionCode="1"
    android:versionName="1" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


    <application
        android:hardwareAccelerated="true"
        android:label="FacePhotoDemo"
        android:allowBackup="true"
        android:icon="@drawable/icon">
Run Code Online (Sandbox Code Playgroud)