2016-04-23 132 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

相關問題