隐藏代码
async Task BtnCameraEvento() { try { await CrossMedia.Current.Initialize(); //Verifica se a camera está disponivel if (!CrossMedia.Current.IsTakePhotoSupported || !CrossMedia.Current.IsCameraAvailable) { await App.Current.MainPage.DisplayAlert("Aviso", "Nenhuma camera detectada", "OK"); return; } //tira a foto var file = await CrossMedia.Current.TakePhotoAsync( new StoreCameraMediaOptions { SaveToAlbum = false, Directory = "Demo", Name = "foto" }); //Verifica se foi tirado alguma foto if (file == null) return; //Adiciona a foto a lista de imagens _imageList.Add(file.Path); } catch (Exception ex) { int x = 1; } }
以下错误出现在“ CrossMedia.Current.TakePhotoAsync”行中:
“无法获取文件位置。这很可能意味着未在Android Manifest文件中设置文件提供者信息。请查看有关如何在项目中进行设置的文档。”
答案 0 :(得分:1)
尤其请参见Sushihangover链接的文档的这一部分:
https://github.com/jamesmontemagno/MediaPlugin#android
在此处复制以防链接中断:
Android
需要WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限,但是库将自动为您添加此权限。此外,如果您的用户正在运行棉花糖,则插件将自动提示他们输入运行时权限。您必须将权限插件代码添加到您的主要活动或基础活动中:
添加到活动:
public override void OnRequestPermissionsResult(int requestCode, string[]
permissions, Android.Content.PM.Permission[] grantResults)
{
Plugin.Permissions.PermissionsImplementation.
Current.OnRequestPermissionsResult
(requestCode, permissions, grantResults);
}
Android当前活动设置
此插件使用当前活动插件来访问当前的Android活动。如果没有将MainApplication.cs文件自动添加到您的应用程序,请确保完成完整的设置。请完整阅读当前活动插件文档。您必须至少在Activity的OnCreate方法中设置以下内容:
CrossCurrentActivity.Current.Init(this, bundle);
强烈建议您使用“当前活动插件文档”(https://github.com/jamesmontemagno/CurrentActivityPlugin/blob/master/README.md)中概述的自定义应用程序
Android其他设置
通过添加这些权限,Google Play会自动过滤掉没有特定硬件的设备。您可以通过在Android项目中的AssemblyInfo.cs文件中添加以下内容来解决此问题:
[assembly: UsesFeature("android.hardware.camera", Required = false)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]
Android文件提供程序设置
您还必须添加一些其他配置文件以遵守新的严格模式:
1。)将以下内容添加到您的AndroidManifest.xml中的
标记内:
<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>
2。)在您的Resources文件夹中添加一个名为xml的新文件夹,并添加一个名为file_paths.xml的新XML文件。确保此XML文件的构建操作为:AndroidResource。
添加以下代码:
<?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>
您可以在以下网址阅读更多信息:https://developer.android.com/training/camera/photobasics.html