Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于文件类型的Android意图_Android_Android Intent_Mime Types - Fatal编程技术网

基于文件类型的Android意图

基于文件类型的Android意图,android,android-intent,mime-types,Android,Android Intent,Mime Types,我正在尝试为Android开发一个文件夹浏览器。。 文件夹可以有任何类型的文件,即doc文件、txt文件、mp3、avi、apk文件等。。 如何根据用户单击的文件启动特定应用程序。。。 我的意思是如何构造基于意图的文件类型。。。 谢谢 Prashanth创建一个活动。在这里,您可以找到文件的扩展名,无论是mp3还是dic等。根据扩展名,您可以调用此活动中的其他活动 谢谢 Deepak只需设置意图的类型,例如:Intent.setType(“video/mpeg”) 编辑:用于动态获取文件的MIM

我正在尝试为Android开发一个文件夹浏览器。。 文件夹可以有任何类型的文件,即doc文件、txt文件、mp3、avi、apk文件等。。 如何根据用户单击的文件启动特定应用程序。。。 我的意思是如何构造基于意图的文件类型。。。 谢谢
Prashanth创建一个活动。在这里,您可以找到文件的扩展名,无论是mp3还是dic等。根据扩展名,您可以调用此活动中的其他活动

谢谢
Deepak只需设置意图的类型,例如:
Intent.setType(“video/mpeg”)


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

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

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

我仍在寻找短代码,但我希望此代码可以帮助您…

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

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

对于已知的文件类型可以这样做…假设有新的文件类型,例如.rtf,并且用户安装了一些应用程序来显示.rtf文件。。然后我必须重新编写我的应用程序以运行这些文件…不,因为你可以从文件中获取MIME类型;)看我的编辑!你好您能告诉我是否可以根据mime类型显示该文件的预览吗。我的意思是,如果是视频,我想显示预览,如果是pdf,我只想显示一个图标,让用户点击打开它。这是可能的吗?这是可能的,但我很确定你必须自己实现它。我不想在我的应用程序中硬编码基于扩展的活动启动。这不能由系统本身完成。我想使用通用的。因此,在将来的某个时候,如果用户为某个“.abc”扩展安装一个应用程序,然后使用我的应用程序并单击“.abc”文件必须启动该应用程序。。