Я пытаюсь показать предварительный просмотр камеры заднего вида в Codename One. Я использую для этого собственный интерфейс (сначала я нацелен на Android).Как заставить разрешение «android.permission.CAMERA» добавить в манифест в Codename 1
Чтобы разрешить мое приложение, чтобы использовать камеру, не портя с сборки намеков, я добавил эти строки в моей главной форме:
if (Capture.hasCamera()){
Dialog.show("Appareil photo détecté", "Votre matériel est bien équipé d'un appareil photo!", "OK", null);
}
Я сделал это потому, что Codename One blog заявил
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 блог линию <uses-feature android:name="android.hardware.camera" android:required="false" />
уже добавлен CN1.
Теперь, когда я добавил эту строку, живой просмотр хорошо показан.
Почему это разрешение не добавляется автоматически в манифест, должен ли я добавить его в подсказку сборки?
Кроме того, у меня есть другой проект, который использует камеру для фотосъемки и сохранения их на телефоне, а разрешение камеры не отображается (в приложении Android Application Info) и не запрашивается во время установки приложения, тогда как оно работает отлично. Обратите внимание, что, например, Приложение Twitter показывает «Делайте фотографии и записывайте видео» в разрешениях приложения, поэтому это не похоже на проблему с моим телефоном, скрывающим разрешение камеры.
EDIT 20 ноября 2016:
Действительно Android Developer's guide утверждает, что
Примечание: Если вы используете камеру, вызывая существующего приложения камеры, приложение не нужно просить это разрешение.
Именно поэтому CN1 не требует этого разрешения!
Спасибо, что помогли мне получить разрешение с CN1 вправо.
Если вы не хотите запрашивать разрешения во время выполнения, вы можете установить compiledSDKversion для android L. В этом случае ваше приложение будет игнорировать все функции Marshmallow. – Tasneem