【问题标题】:Why does my Android app not request permissions on install?为什么我的 Android 应用不请求安装权限?
【发布时间】:2016-08-17 08:22:12
【问题描述】:

安装 APK 时,显示该应用不需要特殊权限。

在应用内启动相机时,它会询问用户是否允许应用访问相机,这很好。

在尝试使用麦克风时,由于权限问题,它不会询问并强制退出。

编辑(澄清):为什么应用没有请求这些权限?

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lbu.c3369131.noter"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
    android:minSdkVersion="23"
    android:targetSdkVersion="23" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<application

【问题讨论】:

  • @tynn 为什么不请求权限?
  • 也许你不是打电话给requestPermissions(),而是要求RECORD_AUDIO。在 Android 6.0+ 设备上,targetSdkVersion 为 23+,您必须自己请求 dangerous 权限。另请注意,您不能持有CAPTURE_AUDIO_OUTPUT,除非您正在构建自己的自定义ROM或其他东西。
  • @CommonsWare 你又救了我!请务必将其写为答案,以便我接受:)

标签: android android-permissions


【解决方案1】:

在 Android 6.0 上,targetSdkVersion 为 23 或更高,您需要调用 requestPermissions() 以获得所有 dangerous 权限,除了在清单中包含 &lt;uses-permission&gt; 元素。您何时何地向用户请求权限(首次运行时,用户单击大红色按钮时等)由您决定。

在您的情况下,听起来您以这种方式请求了CAMERA,但未能请求RECORD_AUDIO。单独请求这些可能是有意义的,特别是如果您同时操作静态相机和录制视频,因为您不需要RECORD_AUDIO 来拍摄照片。因此,例如,在this sample app 中,我在第一次运行时请求CAMERA(和WRITE_EXTERNAL_STORAGE),但我只在用户明确要求录制视频时才请求RECORD_AUDIO

未能在运行时请求dangerous 权限,然后使用受该权限保护的某些API,通常会导致SecurityException

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2019-12-14
    • 2015-07-28
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多