2016-04-23 92 views
1

安装APK时,显示应用程序不需要特殊权限。为什么我的Android应用程序不请求安装权限?

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

当试图使用麦克风时,由于权限问题,麦克风不会强制退出。

编辑(澄清):为什么应用程序不请求这些权限?

清单:

<?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 
+0

@tynn为什么它不请求权限? – RJH94

+1

也许你没有调用'requestPermissions()',要求'RECORD_AUDIO'。在Android 6.0+设备上,如果targetSdkVersion为23+,则必须自己要求“危险”权限。另外请注意,除非您正在构建自己的自定义ROM或其他东西,否则无法保存'CAPTURE_AUDIO_OUTPUT'。 – CommonsWare

+0

@CommonsWare你救了我一次!请做出答案,以便我可以接受它:) – RJH94

回答

2

在Android 6.0,具有23或更高的targetSdkVersion,你需要调用requestPermissions()所有dangerous权限,除了具有在清单中为他们<uses-permission>元素。何时何地向用户请求权限(第一次运行时,用户单击Big Red按钮等时)取决于您。

就你而言,这听起来像你要求CAMERA这样,但没有要求RECORD_AUDIO。分开请求这些可能是有意义的,特别是如果您正在操作静态照相机和录制视频,因为您不需要RECORD_AUDIO用于照片。因此,例如,在this sample app中,我首先请求CAMERA(和WRITE_EXTERNAL_STORAGE),但当用户专门要求录制视频时,我只要求RECORD_AUDIO

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

相关问题