我正在开发一个应用程序,它列出文件夹中的文件(在 ListView 中)。当用户单击其中一个项目时,如果它是一个文件,那么我想启动一个可以处理它的活动(如果有的话),或者如果没有则显示某种错误消息。
我怎样才能做到这一点?当然,这不是全部,但我如何确定哪些应用程序可以处理文件(如果有)。
首先,您需要确定文件的 MIME 类型。您可以使用以下方法执行此操作Mime类型映射 http://developer.android.com/reference/android/webkit/MimeTypeMap.html:
MimeTypeMap map = MimeTypeMap.getSingleton();
String extension = map.getFileExtensionFromUrl(url); // url is the url/location of your file
String type = map.getMimeTypeFromExtension(extension);
然后,一旦您知道 MIME 类型,您就可以为该类型创建一个意图:
Intent intent = new Intent();
intent.setType(type);
最后,您想要检查是否有任何活动可以解析该类型的意图。这可以通过包管理器 http://developer.android.com/reference/android/content/pm/PackageManager.html:
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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)