2012-05-08 4 views
0

Mon application devrait être en mesure d'envoyer le texte dans un TextView via WhatsApp, Email, SMS, etc. Pour cela, j'ai besoin d'une liste des applications Messing installés. J'ai essayé avec le PackageManger mais j'ai toutes les applications. Comment puis-je obtenir uniquement les applications de messagerie instantanée?comment obtenir la liste des applications de messagerie instantanée installées?

C'est mon code à la liste des applications installées:

PackageManager packageManager=this.getPackageManager(); 
    List<PackageInfo> applist=packageManager.getInstalledPackages(0); 
    Iterator<PackageInfo> it=applist.iterator(); 
    while(it.hasNext()){ 
    PackageInfo pk=(PackageInfo)it.next(); 
    if(PackageManager.PERMISSION_GRANTED==(packageManager.checkPermission(Manifest.permission.INTERNET, pk.packageName)& packageManager.checkPermission(Manifest.permission.RECEIVE_SMS, pk.packageName))) //checking if the package is having INTERNET permission 
    { 
    myList.add(""+pk.applicationInfo.loadLabel(packageManager)); 
    } 
    } 
+1

Proposons une règle (en anglais) qui se qualifier une application comme une "application de messagerie instantanée" Si vous pouvez le faire, il pourrait être possible de mettre en œuvre dans le code et d'exécuter ... si non ... –

Répondre

0

Censé vous parvenez à obtenir la liste des applications que vous voulez, alors qu'est-ce que tu vas faire avec eux? Je pense que vous devez laisser Android pour présenter une liste d'applications à vos utilisateurs pour qu'ils choisissent l'application qu'ils veulent gérer le texte, en fonction de l'action effectuée. Heureusement, il s'agit d'une fonctionnalité intégrée dans Android. Voici ma fonction pour envoyer des e-mails:

public static void StartEmailIntent (Context cx, String EmailAddress){ 
    Intent email = new Intent(Intent.ACTION_SEND); 

    email.setType("plain/text"); 
    email.putExtra(Intent.EXTRA_EMAIL, new String[]{EmailAddress}); 

    cx.startActivity(Intent.createChooser(email, cx.getString(R.string.dlg_sendmail_selectortitle))); 
} 

Comme vous pouvez le voir, je suis en train Intent.ACTION_SEND comme l'action, puis avec l'androïde Intent.createChooser crée une liste d'applications capables de gérer cette action basée sur le type et les extras de l'intention. Il ne devrait pas être difficile d'adapter d'autres actions comme les SMS, les appels téléphoniques, etc. Vous pouvez lire plus ici Sending Content to Other Apps

Hope this helps ...

+0

Merci. Tu es le meilleur !!! – user1367269

0

Si vous ciblez Sandwich à la crème glacée vous devriez aller avec le ShareActionProvider. Là vous obtenez votre liste désirée de manières de partager ce que vous voulez.

Vous pouvez également lire ceci android-developer-blogpost où ils expliquent comment partager via l'intention. Ainsi, par exemple pour votre emailsharing:

Intent intent=new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 

// Add data to the intent, the receiving app will decide what to do with it. 
intent.putExtra(Intent.EXTRA_SUBJECT, “Some Subject Line”); 
intent.putExtra(Intent.EXTRA_TEXT, “Body of the message, woot!”); 
Questions connexes