Я пытаюсь написать приложение форм xamarin, чтобы просто сделать снимок и сохранить изображение, - PullRequest
0 голосов
/ 04 августа 2020

Я получаю следующую ошибку:

System.ArgumentException: 'Невозможно получить местоположение файла. Скорее всего, это означает, что информация о поставщике файлов не указана в вашем Android файле манифеста.

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

var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
    Directory = "",
    SaveToAlbum = true
});

(Я пробовал установить «Каталог» на «изображения», «картинки» и все остальное, что вы можете придумать!

resources / file_paths. xml это ...

<?xml version="1.0" encoding="utf-8" ?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
  <external-files-path name="my_images" path="Pictures" /> 
  <external-files-path name="my_movies" path="Movies" />
</paths>

Мой AndroidManifest. xml это ...

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.app1" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28" />
    <application android:label="App1.Android" android:icon="@drawable/Woodstonelogo"></application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <application android:label="App1.Android">
    <provider android:name="android.support.v4.content.FileProvider" 
                android:authorities="${applicationId}.fileprovider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
    </provider>
  </application>
</manifest>

1 Ответ

0 голосов
/ 04 августа 2020

Причина: В вашем AndroidManifest. xml вы определяете два тега application . Так что по умолчанию будет работать первый. Таким образом, провайдер никогда не будет установлен, как во втором теге.

Решение:

Измените код, как показано ниже

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.app1" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28" />
    <application android:label="App1.Android" android:icon="@drawable/Woodstonelogo"> 
      <provider android:name="android.support.v4.content.FileProvider" 
                android:authorities="${applicationId}.fileprovider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
      </provider>
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...