【问题标题】:Android MediaStore ActivityNotFound Exception, is a lieAndroid MediaStore ActivityNotFound 异常,是骗人的
【发布时间】:2012-11-19 19:37:27
【问题描述】:

我正在尝试加载仅显示系统库中视频文件的文件列表。

final Intent intent1 = new Intent(Intent.ACTION_PICK);
intent1.setDataAndType(android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI, "video/*");
startActivityForResult(intent1, ACTIVITY_SELECT_VIDEO);

我在调试器上收到ActivityNotFound 异常,导致应用程序在实际手机上崩溃但是画廊确实加载了仅显示视频文件的手机。

这正是仅加载图像文件时的工作原理,除了没有崩溃。

我该怎么做:

a) 始终加载正确的图库

b) 捕获此异常或使用条件语句避免它,因为它在所有设备上的行为都不相同

【问题讨论】:

    标签: android video android-intent android-activity mediastore


    【解决方案1】:

    一致地加载正确的画廊

    我会转储 "video/*" 并在 Intent 构造函数中提供 Uriandroid.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI 应该已经适用于视频,这是集合的错误 MIME 类型。

    或者,使用android.provider.MediaStore.Video.Media.CONTENT_TYPE 作为 MIME 类型,而不是"video/*"

    捕获这个异常

    使用 try/catch 块,与在 Java 中捕获任何异常的方式相同。 ActivityNotFoundExceptionRuntimeException

    或者用条件语句避免它

    使用PackageManagerqueryIntentActivities()resolveActivity()

    【讨论】:

    • 使用 .CONTENT_TYPE 和 .MIME_TYPE 有什么区别
    • @CQM:嗯,对于初学者来说,SDK 文档中没有android.provider.MediaStore.Video.Media.MIME_TYPE,使用现有的东西总是更容易。 :-)
    • true 是的,我实际上是在图像、音频和视频之间徘徊。如此多的组合不适用于所有设备。尝试一次专注于一种内容类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    相关资源
    最近更新 更多