【问题标题】:Select videos on Android在 Android 上选择视频
【发布时间】:2015-11-10 20:03:42
【问题描述】:

我在尝试在 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
}

这在从“图库”选项中选择视频时效果很好,但是当我尝试从选择器的“最近”或“下载”部分中选择视频时,VID 始终为空。

有谁知道如何可靠地从视频选择器意图中获取视频数据?此外,代码在 C# 中,因为这是一个 Monotouch (Xamarin) 应用程序,但我在原生 Android 中创建了一个测试应用程序,并且遇到了完全相同的问题。

谢谢!

【问题讨论】:

  • 你检查过这个吗? link
  • @shreyashmashru 该链接就像一个魅力。请将此作为答案发布,我会将其标记为已接受的答案。

标签: android video xamarin


【解决方案1】:

基本上这段代码来自这篇文章。请参考此link 了解更多信息或如何从 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());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多