Мы пытаемся получить доступ к камере Android в приложении Kivy, которое мы создаем. Сначала мы выбрали plyer
, но получили ошибку ClipData.Item.getUri()
. В итоге мы попытались следовать описанным здесь деталям: https://github.com/kivy/plyer/issues/500#issuecomment -565532048
Теперь, похоже, возникла проблема с получением URI для файла.
Мы добавили это в AndroidManifest.tmpl.xml
:
<manifest>
<application>
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="org.our.appnamehere"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
</application>
</manifest>
и это также в file_paths.xml
:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="Android/data/org.our.appnamehere/files/Pictures" />
</paths>
Мы попытались изменить строку android:authorities
на org.our.appnamehere.provider
и org.our.appnamehere.fileprovider
, а также изменение соответствующего getUriForFile
в данном файле из ссылки выше
...
photo_file = self._create_image_file()
if photo_file is not None:
photo_uri = FileProvider.getUriForFile(
self.currentActivity.getApplicationContext(),
self.currentActivity.getApplicationContext().getPackageName(),
photo_file
)
...
на self.currentActivity.getApplicationContext().getPackageName() + '.provider'
или self.currentActivity.getApplicationContext().getPackageName() + '.fileprovider'
.
Приложение успешно создает файл, на который ссылается photo_file
, так как мы можем получить к нему доступ в Android/data/org.our.appnamehere/files/Pictures
. Мы всегда получаем следующую ошибку, предположительно из строки photo_uri
:
JavaException("JVM Exception occurred: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference")
Смартфон, на котором мы запускаем скомпилированное приложение, находится на Android P ie, версия 9.
Почти все решения этой ошибки выглядят так же, как те, которые мы добавили в манифест и путь_файла. xml. В дополнение к нескольким вариантам android:authorities
, мы также попробовали следующие строки из этой ссылки: https://github.com/jkwiecien/EasyImage/issues/103#issuecomment -304304045
<provider
...
tools:replace="android:authorities">
<meta-data
...
tools:replace="android:resource"/>
</provider>
Они на самом деле не работают, и мы все еще можем не получить доступ к камере. Мы могли бы просто упустить что-то очевидное ...
Любая помощь будет принята с благодарностью. Большое спасибо.