2010-08-24 8 views
1

Comment serais-je en mesure d'obtenir le mimeType à partir d'une application.comment obtenir le mimeType à partir d'une application?

Je travaille sur une application qui filtre certaines applications installées basées sur le mimeType.

quelqu'un pourrait m'aider s'il vous plaît avec ce problème?

merci beaucoup

Répondre

1

types MIME sont associés à des activités. Vous pouvez utiliser List et PackageManager.queryIntentActivities (i, 0) pour obtenir toutes les activités et donc les applications pour un type de données mime donné.

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

Sinon, vous pouvez obtenir toutes les applications (largable) par:

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

et de classer maintenant par type de chaîne = getIntent(). GetType();

+0

Salut Sameer, u peut me donner un exemple. Comme si je voulais toutes les applications qui ont une vidéo mimeType. – suppi

0

Comment pourrais-je être en mesure d'obtenir le mimeType d'une application.

Les applications ne possèdent pas de type MIME.

Vous pouvez créer un ACTION_VIEWIntent avec un certain type MIME et utiliser PackageManager et queryIntentActivities() pour déterminer quelles activités répondront à cette Intent.

0

Vous ne pouvez obtenir le type de données dans l'intention MIME:

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

salut, je voudrais obtenir le type mime d'une autre intention applications ... – suppi

0

Bien que ce n'est pas une réponse complète, cela devrait vous aider à vous rapprocher:

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

J'ai utilisé ce code pour obtenir tous les types MIME. mais je reçois nullpointer car la variable item.filter est toujours nulle dans le simulateur et aussi dans le périphérique. – Pavandroid

Questions connexes