基于文件类型的Android意图

时间:2011-05-26 05:37:33

标签: android android-intent mime-types

我正在尝试为Android开发文件夹浏览器.. 一个文件夹可以有任何类型的文件,即doc文件,txt文件,mp3,avi,apk文件等等。 如何基于用户单击的文件启动特定应用程序... 我的意思是我如何构建基于文件类型的意图... 谢谢 普拉香特

4 个答案:

答案 0 :(得分:2)

只需设置Intent的类型,例如:intent.setType("video/mpeg");

编辑:使用MimeTypeMap动态获取文件的MIME类型。

答案 1 :(得分:0)

创建一项活动。在哪里可以找到文件的扩展名,无论是mp3还是dic等。根据扩展名调用此活动的其他活动。

由于 迪帕克

答案 2 :(得分:0)

可能是这样的...因为我在我的代码上尝试...

//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/*");
    }

我仍在寻找短代码,但我希望这段代码可以帮助你...

答案 3 :(得分:0)

我发现了一个。也许这可以帮到你:

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);
相关问题