我正在开发一款列出文件夹中文件的应用程序(在 ListView 中)。当用户点击其中一个项目时,如果它是一个文件,则我想要启动一个能够处理它的活动(如果有任何),否则显示某种错误消息。
我该怎么做呢?当然不是整个程序,但是我如何确定哪些应用程序可以处理文件(如果有)?
我该怎么做呢?当然不是整个程序,但是我如何确定哪些应用程序可以处理文件(如果有)?
首先,您需要确定文件的MIME类型。您可以使用MimeTypeMap来完成:
MimeTypeMap map = MimeTypeMap.getSingleton();
String extension = map.getFileExtensionFromUrl(url); // url is the url/location of your file
String type = map.getMimeTypeFromExtension(extension);
Intent intent = new Intent();
intent.setType(type);
最后,您需要检查是否有任何活动可以使用该类型解析意图。这可以通过PackageManager完成:
PackageManager manager = getPackageManager(); // I'm assuming this is done from within an activity. This a Context method.
List<ResolveInfo> resolvers = manager.queryIntentActivities(intent, 0);
if (resolvers.isEmpty()) {
// display error
} else {
// launch the intent. You will also want to set the data based on the uri of your file
}
基于...
如何确定哪个应用程序(如果有)可以处理文件?
我认为你需要使用PackageManager.queryIntentActivities,其中你可以根据目标文件创建一个意图,然后读取返回的列表。