[英]Xamarin.Forms Plugin.Media GetStream/Dispose does not exist
[英]Xamarin Plugin.Media “Unable to get file location”
很奇怪的情况。 我的 xml 文件完全按照自述文件所说的方式设置。 然而,当我尝试访问 CrossMedia.Current.TakePhotoAsync() 时,我得到以下异常:
无法获取文件位置。 这很可能意味着您的 Android 清单文件中未设置文件提供程序信息。 请查看有关如何在您的项目中进行设置的文档。
但是,这是我的 AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.clipidapp" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="ClipIDApp.Android">
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.companyname.clipidapp.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" />
</manifest>
这是file_paths
<?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>
这是我尝试访问 TakePhotoAsync() function 的代码
try {
_mediaFile = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
Directory = "temp",
SaveToAlbum = false,
CompressionQuality = 75,
CustomPhotoSize = 50,
PhotoSize = PhotoSize.MaxWidthHeight,
MaxWidthHeight = 2000,
DefaultCamera = CameraDevice.Front,
Name = "test.jpg"
});
if (_mediaFile == null) return;
image.Source = ImageSource.FromStream(() =>
{
var stream = _mediaFile.GetStream();
return stream;
});
}
catch(Exception Ex)
{
await Current.MainPage.DisplayAlert("Error", Ex.Message, "OK");
}
看看这里的答案
引用
@Kevelop说:
当我使用下面的 file_paths.xml 文件时(正如 mediaPlugin README 中提到的那样!)
<?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>
仅当 Android 设置中 memory 的默认位置设置为内部 memory 时,它才有效。 当设置为 SD 卡时,它不起作用!
当我将 file_paths.xml 文件更改为此:
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="my_images" path="Android/data/com.plugin.mediatest/files/Pictures" /> </paths>
它适用于内部memory和 SD 卡。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.