2012-01-11 71 views
2

嗨我正在开发一个应用程序,我需要列出能够打开文件的所有类型的应用程序。如果文件是一个图像,我通常会这样做,以显示所有能够查看图像的应用程序。可以查看未知文件的Android列表应用程序

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), "image/*"); 
context.startActivity(intent); 

但是说,我有一个未知的文件,我怎么能列出能够查看文件,以便用户可以选择相应的应用程序在我的应用程序打开该文件的所有应用程序。

如果可能的话,我还需要在arraylist中列出的标题,以便我可以在listview中列出它们。

谢谢你的任何帮助,得到的能够查看文件的应用程序列表

========================== =========

编辑

好的东西也更容易我怎样才能从上面的意图应用到一个ArrayList我只是做图像/音频*/*等,并添加他们都列表,然后在列表视图中列出,这将解决我的问题

+0

你如何确定应用程序是否可以处理文件?如果您不是自己编写所有这些应用程序,则必须能够筛选您为未知文件创建的意图。这些应用程序在调用startActivity(intentWithUnknownFile)时如何知道过滤的意图; – robertly 2012-01-11 18:56:26

回答

0

好吧好吧,我想通了我的问题了什么我一直在寻找的是

Intent audioIntent = new Intent(android.content.Intent.ACTION_VIEW); 
    audioIntent.setDataAndType(Uri.fromFile(Opener.file), "audio/*"); 
    List<ResolveInfo> audio = packageManager.queryIntentActivities(audioIntent, 0); 
    for (ResolveInfo info : audio){ 
     String label = info.loadLabel(packageManager).toString(); 
     Drawable icon = info.loadIcon(packageManager); 
     String packageName = info.activityInfo.packageName; 
     String name = info.activityInfo.name; 
     iconlabel.add(a.new HolderObject(label, icon, audioIntent, "audio/*", packageName, name)); 
    } 

但在上面的代码中主要的是queryIntentActivities方法竟然是解决我的问题,让我将这些应用程序添加到列表

0

据我所知,android中没有将文件链接到程序中的API,如在Windows中。你最好的选择恐怕是建立一个已知的文件类型和程序/ Android应用程序链接到他们的数据库。

+0

当我点击一个未知文件时,出现一个“开启者”,并且有三个选项卡,第三个选项卡列出了邮件,浏览器,文本查看器等应用程序,所有能够打开未知文件基本上试图复制该文件 – user577732 2012-01-11 19:30:51

0

这可能会帮助您列出能够打开特定文件的应用程序。

// extension : The file extension (.pdf, .docx) 

String extension = filePath.substring(filePath.lastIndexOf(".") + 1); 
     String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); 

     if (null == mimeType) { 
      // Need to set the mimetype for files whose mimetype is not understood by android MimeTypeMap. 
      mimeType = ""; 
     } 
     File file = new File(filePath); 
     Uri data = Uri.fromFile(file); 
     Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.setDataAndType(data, mimeType); 
     context.startActivity(Intent.createChooser(intent, "Complete action using")); 
相关问题