【问题标题】:Android intent based on file type基于文件类型的 Android Intent
【发布时间】:2011-05-26 05:37:32
【问题描述】:

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

【问题讨论】:

    标签: android android-intent mime-types


    【解决方案1】:

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

    编辑:使用MimeTypeMap 动态获取文件的 MIME-Type。

    【讨论】:

    • 这可以为已知的文件类型完成...假设有新的文件类型说 .rtf 并且用户已经安装了一些应用程序来显示 .rtf 文件..那么我将不得不重新编码我的应用程序运行此类文件...
    • 不,因为您可以从文件中获取 MIME 类型;)查看我的编辑!
    • 嗨。您能否告诉我是否可以根据 mime 类型显示文件的预览。我的意思是,如果是视频,我想显示预览,如果是 pdf,我只想显示一个图标并让用户通过单击它来打开它。这可能吗?
    • 这是可能的,但我很确定你必须自己实现它。
    【解决方案2】:

    创建一项活动。您将在哪里找到文件的扩展名,无论是 mp3 还是 dic 等。基于扩展名调用此活动中的另一个活动。

    谢谢 迪帕克

    【讨论】:

    • 我不想在我的应用程序中对基于扩展的活动启动进行硬编码..不能由系统本身完成..我想使用通用的,以便在将来的某个时候如果用户安装某个“.abc”扩展名的应用程序,然后使用我的应用程序并单击“.abc”文件必须启动该应用程序..
    【解决方案3】:

    我找到了一个。也许这可以帮助你:

    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);
    

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-01-29
        • 2016-02-02
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        • 2021-08-03
        相关资源
        最近更新 更多