虽然我已经看过关于这个主题的几个主题和教程,但我想我仍然对如何从应用程序列表中选择应用程序以显示文件感到困惑。
我有一个Activity,里面有一个列表视图。此列表视图与文件路径绑定(因此是各种文件浏览器)。当我们点击特定的文件类型时,我需要一个可以打开该文件的应用程序列表。
到目前为止,这是我在OnItemClick中列出的项目:
Intent myIntent = new Intent();
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
myIntent.setAction(Intent.ACTION_VIEW);
myIntent.addCategory("android.intent.category.DEFAULT");
myIntent.setData(Uri.fromFile(new File(filePath)));
当我在手机上运行时,错误是:
No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.DEFAULT] dat=file:///
当我在文件浏览器应用程序(从市场上下载)中执行相同操作时,我得到两个选项(QuickOffice和Word to Go),这两个选项都已安装在我的手机上。
有人可以指导我这里需要什么吗?除了上面的内容我尝试过的事情:
将以下条目添加到清单中:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" >
<category android:name="android.intent.category.DEFAULT" >
<data android:scheme="file" />
</intent-filter>
明确设置类型:
myIntent.setDataAndType(Uri.fromFile(new File(filePath)),"*");
这两项都不奏效,感谢任何帮助。
谢谢!
答案 0 :(得分:1)
首先,*
不是MIME类型。您必须使用setDataAndType()
并提供真实的MIME类型。如果您不知道真正的MIME类型,则无法构建应用程序。
其次,我会摆脱addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
和addCategory("android.intent.category.DEFAULT")
,除非你有绝对证明你需要它们。
第三,您的活动的意图过滤器与任何其他活动的意图过滤器无关,因此您在#1中尝试的所有过滤器都无关紧要,可能应该删除。