2016-04-23 4 views
1

При установке APK он показывает, что приложение не требует специальных разрешений.Почему приложение Android не запрашивает разрешения на установку?

При запуске камеры внутри приложения запрашивает у пользователя, разрешить ли приложение доступ к камере, и это нормально.

При попытке использовать микрофон он не запрашивает и не уходит из-за проблем с разрешением.

EDIT (Уточнение): Почему приложение не запрашивает эти разрешения?

Manifest:

<?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+ вы должны сами запрашивать« опасные »разрешения. Также обратите внимание, что вы не можете удерживать 'CAPTURE_AUDIO_OUTPUT', если вы не создаете свой собственный ПЗУ или что-то еще. – CommonsWare

+0

@CommonsВыберете меня снова! Пожалуйста, напишите это как ответ, чтобы я мог принять его :) – RJH94

ответ

2

На Android 6.0, с targetSdkVersion 23 или выше, вам нужно вызвать requestPermissions() для всех dangerous разрешений, в дополнение к наличию <uses-permission> элементов для них в манифесте. Когда и где вы запрашиваете разрешения у пользователя (при первом запуске, когда пользователь нажимает кнопку «Большая красная кнопка» и т. Д.) Зависит от вас.

В вашем случае это похоже на то, что вы запросили CAMERA таким образом, но не смогли запросить RECORD_AUDIO. Запрашивать их отдельно может иметь смысл, особенно если вы работаете как с неподвижной камерой, так и с видеозаписями, так как вам не нужны RECORD_AUDIO для фотографий. Так, например, в this sample app, я запрашиваю CAMERAWRITE_EXTERNAL_STORAGE) при первом запуске, но я прошу только RECORD_AUDIO, когда пользователь конкретно просит записать видео.

Несоблюдение разрешения dangerous во время выполнения, а затем использование некоторого API, защищенного этим разрешением, обычно приводит к SecurityException.

Смежные вопросы