选择Android上的视频

选择Android上的视频,android,video,xamarin,Android,Video,Xamarin,我在Android上选择照片时遇到问题。我正在使用下面的代码启动活动 var intent = new Intent (); intent.SetType ("video/*"); intent.SetAction (Intent.ActionGetContent); intent.PutExtra (MediaStore.ExtraVideoQuality, 0); intent.PutExtra (MediaStore.ExtraDurationLimit, Globals.VideoMax

我在Android上选择照片时遇到问题。我正在使用下面的代码启动活动

var intent = new Intent ();
intent.SetType ("video/*");
intent.SetAction (Intent.ActionGetContent);
intent.PutExtra (MediaStore.ExtraVideoQuality, 0);
intent.PutExtra (MediaStore.ExtraDurationLimit, Globals.VideoMaxDuration);
this.StartActivityForResult (Intent.CreateChooser (intent, "Select video"), 200);
然后在OnActivityResult回调中,我使用以下代码获取数据的URI

if (resultCode == Result.Ok && data.Data != null)
{
    String[] proj = { MediaStore.Images.Media.InterfaceConsts.Data };
    ICursor cursor = this.ContentResolver.Query(data.Data, proj, null, null, null);
    int colIndex = cursor.GetColumnIndexOrThrow (MediaStore.Video.Media.InterfaceConsts.Data);
    cursor.MoveToFirst ();
    vid = cursor.GetString(colIndex);

    // do stuff with vid
}
这在从gallery选项选择视频时非常有效,但当我尝试从选择器的最近或下载部分选择视频时,视频总是为空

有人知道如何从视频选择器获取视频数据吗?另外,代码是用C编写的,因为这是一个Monotouch Xamarin应用程序,但我已经在原生Android中创建了一个测试应用程序,并且有完全相同的问题


谢谢

基本上这段代码来自这篇文章。有关更多信息或如何从uri?获取路径,请参阅此

要检查它是否是下载文档,您必须使用以下代码

/**
 * @param uri The Uri to check.
 * @return Whether the Uri authority is DownloadsProvider.
 */
public static boolean isDownloadsDocument(Uri uri) {
    return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}

/**
 * @param uri The Uri to check.
 * @return Whether the Uri authority is MediaProvider.
 */
public static boolean isMediaDocument(Uri uri) {
    return "com.android.providers.media.documents".equals(uri.getAuthority());
}

你检查过这个了吗@shreyashmashru这个链接很有魅力。请将此作为答案发布,我会将其标记为已接受答案。