Я создаю инструмент командной строки с ndk и выполняю его в/data/local/tmp. Теперь это побуждает меня «требует android.permission.RECORD_AUDIO», когда я звоню некоторые OpenSLES API в моей командной строки инструмента:Как предоставить дополнительные разрешения пользователю оболочки Android?
W/AudioRecord(4226): AUDIO_INPUT_FLAG_FAST denied by client
W/ServiceManager( 207): Permission failure: android.permission.RECORD_AUDIO from uid=2000 pid=4226
E/ ( 207): Request requires android.permission.RECORD_AUDIO
D/PowerManagerService( 964): handleSandman: canDream=false, mWakefulness=Asleep
E/AudioFlinger( 207): openRecord() permission denied: recording not allowed
E/AudioRecord(4226): AudioFlinger could not create record track, status: -1
E/libOpenSLES(4226): android_audioRecorder_realize(0x453430) error creating AudioRecord object
W/libOpenSLES(4226): Leaving Object::Realize (SL_RESULT_CONTENT_UNSUPPORTED)
Я также попытался предоставить оболочку с грантом вечера:
pm grant "com.android.shell" android.permission.RECORD_AUDIO
pm grant "com.android.shell" android.permission.RECORD_AUDIO
pm grant "com.android.shell" android.permission.RECORD_AUDIO
Operation not allowed: java.lang.SecurityException: Package com.android.shell has not requested permission android.permission.RECORD_AUDIO
изменения /system/etc/permissions/platform.xml тоже не имеет эффекта.
Могу ли я просто отладить мою демонстрационную версию OpenSLES в оболочке Android? Как я могу получить больше разрешений только в оболочке.
Должен ли я создавать jni и java-проект для каждого экспериментального фрагмента кода и изменять их вместе при изменении некоторых интерфейсов на C++?
Могу ли я получить доступ к RECORD_AUDIO, CAMERA непосредственно в командном инструменте из оболочки?
@Samveen У вас есть сообщение о запуске приложения C++ в оболочке android. Вы знаете, как предоставить разрешения для приложения C++? – skywind3000
Да, вы можете запустить его как суперпользователь. Для этого вам нужно укоренившееся устройство. –