Xamarin从意图过滤器获取图像路径

时间:2015-07-16 16:07:07

标签: android android-intent xamarin

我正在尝试从我想要从图片库分享到我的应用的图像路径。

[IntentFilter( new [] {Intent.ActionSend}, Categories = new [] { Intent.CategoryDefault}, DataMimeType = "image/*" )]
public class MainActivity : FormsApplicationActivity
{
   if (keys.Contains(Intent.ExtraStream)) 
   {

       var uri = (Android.Net.Uri)Intent.GetParcelableExtra(Intent.ExtraStream);
       var path = uri.Path;

       Console.WriteLine (uri);
       Console.WriteLine (path);
   }
}

我得到这个作为输出:

URI: 内容://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F19820/ACTUAL

路径: / 0/1 /内容://媒体/外部/图像/媒体/ 19820 /实际

但是什么是ACTUAL ...我怎么能得到文件名才能打开图像......?

1 个答案:

答案 0 :(得分:1)

最后,

I found my answer here

我必须将uri发送给这个好方法:

private string GetFilePath(Android.Net.Uri uri)
    {
        string[] proj = {MediaStore.Images.ImageColumns.Data};
        //Deprecated
        //var cursor = ManagedQuery(uri, proj, null, null, null);
        var cursor = ContentResolver.Query (uri, proj, null, null, null);
        var colIndex = cursor.GetColumnIndex(MediaStore.Images.ImageColumns.Data);
        cursor.MoveToFirst();
        return cursor.GetString(colIndex);
    }