c# – Xamarin表单文件提供程序未设置
作者:互联网
我目前正在学习Xamarin.Forms.我目前正在尝试使用Plugin.Media.CrossMedia库实现Camera功能.
实施如下:
public async Task<ImageSource> StartCamera()
{
await CrossMedia.Current.Initialize();
if (Plugin.Media.CrossMedia.Current.IsTakePhotoSupported && CrossMedia.Current.IsCameraAvailable)
{
var photo = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions() { SaveToAlbum=false, SaveMetaData=false});
if (photo != null)
return ImageSource.FromStream(() => { return photo.GetStream(); });
else
return null;
}
else
{
return null;
}
}
但是,在执行’TakePhotoAsync’方法时,我收到以下错误.
System.ArgumentException:无法获取文件位置.这很可能意味着您的Android Manifest文件中未设置文件提供程序信息.请查看有关如何在项目中进行设置的文档.
我试过这个但是没有用.我的AndroidManifest.xml文件目前看起来像这样.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="RCPTTracker.Android" android:versionCode="1" android:versionName="1.0">
<uses-sdk />
<application android:label="RCPTTracker.Android"></application>
</manifest>
我的想法是,我需要在这里声明一些内容,但是我无法找到什么,而且我所遵循的所有教程都没有通过设置文件提供程序来完成任何事情.
有什么建议么?
解决方法:
自述文件说:
如果您的应用程序针对Android N(API 24)或更高版本,则必须使用2.6.0版.
您还必须添加一些其他配置文件以遵守新的严格模式:
1.)将以下内容添加到标记内的AndroidManifest.xml中:
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="YOUR_APP_PACKAGE_NAME.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
YOUR_APP_PACKAGE_NAME必须设置为您的应用包名称!
2.)将一个名为xml的新文件夹添加到Resources文件夹中,并添加一个名为file_paths.xml的新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>
YOUR_APP_PACKAGE_NAME必须设置为您的应用包名称!
您可以在以下网址阅读更多信息:https://developer.android.com/training/camera/photobasics.html
标签:android,android-fileprovider,xamarin-forms,c-2 来源: https://codeday.me/bug/20191006/1862144.html