2011-05-26 54 views
1

我想为Android开发一个文件夹浏览器.. 一个文件夹可以有任何类型的文件,即doc文件,txt文件,mp3,avi,apk文件等。 我如何推出基于用户点击了文件... 我的意思是我如何构造一个文件型的意图...... 感谢 普拉香特基于文件类型的Android意图

回答

0

特定的应用程序创建一个活动。在哪里你可以找到文件的扩展名,无论是mp3还是dic等等。根据扩展名从这个活动中调用另一个活动。

感谢 迪帕克

+0

我不想硬编码在我app..cant扩展基于活动推出它由系统来完成itself..i要使用通用的一个,所以在某些时候在未来,如果用户为某些“.abc”扩展程序安装应用程序,那么使用我的应用程序并单击“.abc”文件必须启动该应用程序。 – prash 2011-05-26 06:09:45

2

刚刚成立的意图的类型,例如:intent.setType("video/mpeg");

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

+0

这可以为已知的文件类型完成...假设有新的文件类型说.rtf和用户已经安装了一些应用程序来显示.rtf文件..然后我将不得不重新编码我的应用程序来运行这样的文件... – prash 2011-05-26 06:07:20

+0

不,因为你可以从文件中获得MIME类型;)看我的编辑! – alopix 2011-05-26 09:26:22

+0

嗨。您能否告诉我是否可以根据MIME类型显示文件预览。我的意思是,如果它是一个视频,我想展示一个预览,如果它是一个pdf,我只想显示一个图标,并让用户通过点击打开它。这可能吗? – Vinodtiru 2011-07-12 05:15:14

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

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

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