xamarin.android中的Xam.Plugin.Media预先获取目标文件夹

时间:2016-12-28 23:30:50

标签: xamarin xamarin.android

在Xamarin.Android项目中,我正在使用Xam.Plugin.Media拍照 我想事先知道文件夹中的图片会被存储 有什么方法可以知道吗?

1 个答案:

答案 0 :(得分:1)

按照源代码Xam.Plugin.Media

TakePhotoAsync - > CreateMediaIntent - > MediaPickerActivity.GetOutputMediaFile

您可以找到默认目录:

var directory = saveToAlbum ? Environment.GetExternalStoragePublicDirectory(mediaType) : context.GetExternalFilesDir(mediaType);

因此插件只提供了两种存储路径,一个是GetExternalStoragePublicDirectory,另一个是GetExternalFilesDir。默认情况下,saveToAlbum为false,它将存储在 data / media / Android / data / your.package.name / files / 中。如果saveToAlbum为真,则照片将存储在 DCIM 文件夹中。

在Andorid 6.0中测试以下代码:

takePhoto = FindViewById<Button>(Resource.Id.takephoto);
takePhoto.Click += async (sender, args) =>
{
    await CrossMedia.Current.Initialize();

    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
    {
         return;
    }
    var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
    {
         Directory = "Sample",
         Name = "test.jpg"
     });
     if (file == null)
            return; 
};

你可以找到test.jpg存储在这里:

enter image description here

  

我想事先知道图片将存储在哪个文件夹中

该插件不提供可以获取var directory的界面。所以你不能提前通过编码来获得路径。