Intent.ACTION_GET_CONTENT API 19中出错,但API 23中没有

时间:2017-05-13 10:57:33

标签: android android-intent

我有像这样的开放资源管理器的代码

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent,PICKFILE_RESULT_CODE);

如果我尝试使用手机API 23,但是当我尝试使用手机API 19时,它就能正常工作。 像这样的错误

No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file/* }

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

没有以file/开头的官方MIME类型。如果要按MIME类型进行过滤,则必须使用真正的 MIME类型。

或者,正如评论中建议的greenapps一样,使用*/*接受任何类型的内容。

  

如果我尝试使用手机API 23,但是当我尝试使用手机API 19

时它会正常工作

在您的API Level 23手机上,您安装了一些声称支持以file/*开头的不存在的MIME类型的应用。

答案 1 :(得分:0)

你在测试什么手机? Android的Intent文档建议广泛使用文件/ * MIME类型

  

在这种情况下,您应该使用选择器(通过createChooser(Intent,CharSequence))包装GET_CONTENT意图,这将为用户提供适当的接口,以便选择如何发送数据并允许您指定提示他们在做什么。您通常会指定一种广泛的MIME类型(例如image / *或 / ),从而产生用户可以选择的各种内容类型。

https://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT

只需指定所需的数据类型并启动活动,它就无法处理您运行的手机没有指定处理该类型文件的应用程序的情况。

在这种情况下,您可能希望建议用户安装可以处理此类操作的应用程序