2010-08-24 2 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; 
    } 

Else, вы можете получить все приложения (спускаемых) от:

getIntents (Intent.ACTION_DEFAULT, Intent.CATEGORY_LAUNCHER, вторая половина дня);

и теперь классифицировать по типу String = getIntent(). GetType();

+0

Привет Sameer, может у меня пример. как я хочу все приложения, у которых есть видео mimeType. – suppi

0

Как бы я быть в состоянии получить MIMETYPE из приложения.

Приложения не имеют типов MIME.

Вы можете создать ACTION_VIEWIntent с некоторыми типами MIME и использовать PackageManager и queryIntentActivities(), чтобы определить, какие мероприятия будут реагировать на этот Intent.

0

Вы можете получить только MIME тип данных в намерениях:

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

привет, я хотел бы получить тип пантомимы из другого приложения намерения ... – suppi

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

Я использовал этот код, чтобы получить все миметики. но я получаю nullpointer, поскольку переменная item.filter всегда равна нулю как в симуляторе, так и в устройстве. – Pavandroid

Смежные вопросы