Как заставить разрешение «android.permission.CAMERA» добавляться в манифест в Codename one

Я пытаюсь показать предварительный просмотр камеры заднего вида в Codename One. Я использую для этого собственный интерфейс (сначала я нацелен на Android).

Чтобы мое приложение могло использовать камеру, не вникая в подсказки построения, я добавил эти строки в свою основную форму:

if (Capture.hasCamera()){ Dialog.show("Appareil photo détecté", "Votre matériel est bien équipé d'un appareil photo!", "OK", null); } 

Я сделал это, потому что в блоге Codename One

Android.hardware.camera & android.permission.RECORD_AUDIO – запускаются com.codename1.Capture

Однако при отладке приложения с источниками, которые я получил от CN1 в Android Studio на реальном устройстве (API LEVEL 19 aka Kit Kat), я всегда получал java.lang.RuntimeException: Fail to connect to camera service .

Через некоторое время я понял, что исключение было вызвано отсутствием следующего разрешения в manifest.xml:

<uses-permission android:name="android.permission.CAMERA" android:required="false"/>

Обратите внимание, что, как указано в блоге CN1, CN1 добавила строку <uses-feature android:name="android.hardware.camera" android:required="false" /> .

Теперь, когда я добавил эту строку, живой просмотр хорошо показан.

Почему это разрешение не добавляется автоматически в манифест, должен ли я добавить его в подсказку сборки?

Кроме того, у меня есть другой проект, который использует камеру для фотосъемки и сохранения их на телефоне, а разрешение камеры не отображается (в приложении Android Application Info) и не запрашивается во время установки приложения, тогда как оно работает отлично. Обратите внимание, что, например, приложение Twitter показывает «Снимать фотографии и записывать видео» в разрешениях приложения, поэтому, похоже, это не проблема с моим телефоном, скрывающим разрешение камеры.

EDIT 20 ноября 2016 года:

В самом деле , руководство разработчика Android утверждает, что

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

Вот почему CN1 не требует этого разрешения!

Спасибо, что помогли мне получить управление разрешениями с CN1.

Вам нужно добавить следующий подсказку сборки:

 android.xpermissions=<uses-permission android:name="android.permission.CAMERA" android:required="false"/> 

Вы также можете добавить это в cn1lib, чтобы оно было введено автоматически.

Раньше вы добавляли разрешение, которое хотите для своего манифеста, а затем оно запрашивается, когда пользователь пытается установить ваше приложение. С Android 6.0+ это изменилось. Теперь вы можете просто запросить разрешение, когда ваше приложение нуждается в нем в первый раз. После того как пользователь предоставит вам разрешение, вам не нужно снова спрашивать в следующий раз. Некоторые преимущества этого включают в себя информирование пользователя о том, почему вам нужны конкретные разрешения и не запрашивать разрешения, которые вам действительно не нужны.

Вы можете узнать больше о том, как его реализовать здесь: https://developer.android.com/training/permissions/requesting.html

В какой-то момент невозможно использовать камеру с телефонами, не запрашивая разрешения.