Android MediaStore ActivityNotFound异常,是骗局

时间:2012-11-19 19:37:27

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

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

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异常,导致应用在实际手机上崩溃 BUT ,图库加载时只显示视频文件。

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

我如何:

a)始终加载适当的画廊

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

1 个答案:

答案 0 :(得分:1)

  

始终加载适当的画廊

我会转储"video/*",只在Uri构造函数中提供Intentandroid.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI应该已经确定了视频的范围,这对于集合来说是错误的MIME类型。

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

  

抓住这个例外

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

  

或使用条件语句来避免它

使用PackageManager以及queryIntentActivities()resolveActivity()