2010-08-24 92 views
1

我将如何能够从应用程序获取mimeType。如何从应用程序获取mimeType?

我正在处理基于mimeType的某些已安装应用程序的应用程序。

有人可以帮我解决这个问题吗?

非常感谢

回答

1

MIME类型与活动相关。您可以使用List和PackageManager.queryIntentActivities(i,0)来获取给定数据MIME类型的所有活动和应用程序。

public static List<ResolveInfo> getIntents(String action, String category, 
      PackageManager pm) { 
     Intent i = new Intent(action, null); 
     i.addCategory(category); 
     i.setData(data_uri) 
     List<ResolveInfo> list = pm.queryIntentActivities(i, 0); 
     return list; 
    } 

否则,你可以得到所有应用程序(可发射):

getIntents(Intent.ACTION_DEFAULT,Intent.CATEGORY_LAUNCHER,PM);

现在通过String类型= getIntent()。getType()分类。

+0

嗨萨米尔MIME类型,U可以给我一个例子。 像我想要的所有应用程序有视频mimeType。 – suppi 2010-08-24 13:17:55

0

我将如何能够从一个应用程序获得的媒体类型。

应用程序没有MIME类型。

你可以用一些MIME类型创建ACTION_VIEWIntent和使用PackageManagerqueryIntentActivities(),以确定哪些活动将到Intent回应。

0

你只能得到MIME类型数据的意图:

String type = getIntent().getType(); 
+0

喜, 我想获得从其他应用程序的意图... – suppi 2010-08-30 13:27:35

0

虽然这不是一个完整的答案,这应该可以帮助你接近:

PackageManager pm = getPackageManager(); 
     Intent i = new Intent(Intent.ACTION_MAIN); 
     i.addCategory(Intent.CATEGORY_LAUNCHER); 
     //i.setData(Media.INTERNAL_CONTENT_URI); 

     List<ResolveInfo> list = pm.queryIntentActivities(i, 0); 
     for(ResolveInfo item : list){ 


      try { 

       PackageInfo info = pm.getPackageInfo(item.activityInfo.applicationInfo.packageName, pm.GET_SIGNATURES); 
       Signature[] s = info.signatures; 

       Log.d(LOG_TAG,item.activityInfo.name +":"+ s.toString()); 

      } catch (NameNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      if(item.filter!=null){ 
       Log.d(LOG_TAG,item.activityInfo.name + ": " + item.filter.toString()); 
       List<String> types = (List<String>) item.filter.typesIterator(); 
      } 

     } 
+0

我用这个代码来获取所有的mimetypes。但我得到空指针作为变量item.filter在模拟器和设备中都始终为空。 – Pavandroid 2012-04-25 04:24:58

相关问题