【发布时间】:2011-05-26 05:37:32
【问题描述】:
我正在尝试为 Android 开发一个文件夹浏览器.. 一个文件夹可以包含任何类型的文件,即 doc 文件、txt 文件、mp3、avi、apk 文件等。 如何根据用户单击的文件启动特定应用程序... 我的意思是我如何构建基于文件类型的意图...... 谢谢 普拉桑特
【问题讨论】:
标签: android android-intent mime-types
我正在尝试为 Android 开发一个文件夹浏览器.. 一个文件夹可以包含任何类型的文件,即 doc 文件、txt 文件、mp3、avi、apk 文件等。 如何根据用户单击的文件启动特定应用程序... 我的意思是我如何构建基于文件类型的意图...... 谢谢 普拉桑特
【问题讨论】:
标签: android android-intent mime-types
只需设置Intent的类型,例如:intent.setType("video/mpeg");。
编辑:使用MimeTypeMap 动态获取文件的 MIME-Type。
【讨论】:
创建一项活动。您将在哪里找到文件的扩展名,无论是 mp3 还是 dic 等。基于扩展名调用此活动中的另一个活动。
谢谢 迪帕克
【讨论】:
我找到了一个。也许这可以帮助你:
Intent intent= new Intent();
intent.setAction(Intent.ACTION_VIEW);
File file = new File(filePath);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = file.getName().substring(file.getName().indexOf(".")+1);
String type = mime.getMimeTypeFromExtension(ext);
intent.setDataAndType(Uri.fromFile(file), type);
【讨论】:
可能是这样...因为我正在我的代码上尝试它...
//differentiate file type
String filename = o.getName();
String filenameArray[] = filename.split("\\.");
String extension = filenameArray[filenameArray.length-1];
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
if (extension.contains("png") || extension.contains("gif") || extension.contains("jpg")
|| extension.contains("jpeg") || extension.contains("bmp"))
{
intent.setDataAndType(Uri.parse("file://" + o.getPath()), "image/*");
}
if (extension.contains("txt") || extension.contains("csv") || extension.contains("xml"))
{
intent.setDataAndType(Uri.parse("file://" + o.getPath()), "text/*");
}
if (extension.contains("pdf"))
{
intent.setDataAndType(Uri.parse("file://" + o.getPath()), "application/pdf");
}
if (extension.contains("doc") || extension.contains("docx"))
{
intent.setDataAndType(Uri.parse("file://" + o.getPath()), "application/msword");
}
if (extension.contains("mp3") || extension.contains("wav") || extension.contains("oog")
|| extension.contains("mid") || extension.contains("amr") || extension.contains("midi"))
{
intent.setDataAndType(Uri.parse("file://" + o.getPath()), "audio/*");
}
if (extension.contains("mpeg") || extension.contains("3gp"))
{
intent.setDataAndType(Uri.parse("file://" + o.getPath()), "video/*");
}
我还在寻找短代码,但我希望这段代码可以帮助你...
【讨论】: