2010-08-15 6 views
1

Est-ce encore possible sans appeler un paquet spécifique? J'ai trouvé d'innombrables exemples d'envoi d'emails via l'intention, mais je ne trouve rien sur l'ouverture du client de messagerie par défaut sur l'appareil via un bouton (de préférence avec un sélecteur si l'utilisateur a plusieurs clients).Comment lancer le client de messagerie directement dans la boîte de réception?

+0

Je suis curieux de savoir pourquoi vous voulez faire cela. – MatrixFrog

+0

Le client souhaite que son application dispose d'un bouton "courrier électronique" qui lance simplement le client de messagerie par défaut pour vérifier le courrier de la société. – wirbly

Répondre

5

Il n'y a pas d'action standard Intent pour ouvrir la "boîte de réception" du "client de messagerie par défaut sur le périphérique".

+0

Y a-t-il une action d'intention standard que je peux utiliser pour ouvrir le client de messagerie par défaut? (Même si ce n'est pas la vue de la boîte de réception - il suffit de lancer l'application de la même manière en touchant l'icône sur l'écran d'accueil le lancerait) – wirbly

+0

@wirbly: Non, désolé. – CommonsWare

+0

Ok, merci pour l'info. On dirait que j'appelle un paquet spécifique, alors. – wirbly

1

vous pouvez essayer de votre objet d'activité:

il ne vous prendra pas nécessairement la boîte de réception directement, mais il va ouvrir l'application e-mail:

Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.email"); 
startActivity(intent); 
+0

Celui-ci ne fonctionne que si le client de messagerie Android est le programme de messagerie par défaut (rarement le cas). Si ce n'est pas le cas, startActivity lève une exception. – KPK

+0

même si c'est l'application par défaut, il ne fonctionnerait pas.Je me souviens que certains téléphones htc avaient le paquet email nommé différemment, quelque chose comme "com.htc.android.email". donc ça ne marcherait pas –

12

Il n'y a pas défaut/moyen facile de fais ceci. Ce code a fonctionné pour moi. Il ouvre un sélecteur avec toutes les applications email enregistrées sur le périphérique et directement dans la boîte de réception:

Intent emailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:")); 
    PackageManager pm = getPackageManager(); 

    List<ResolveInfo> resInfo = pm.queryIntentActivities(emailIntent, 0); 
    if (resInfo.size() > 0) { 
     ResolveInfo ri = resInfo.get(0); 
     // First create an intent with only the package name of the first registered email app 
     // and build a picked based on it 
     Intent intentChooser = pm.getLaunchIntentForPackage(ri.activityInfo.packageName); 
     Intent openInChooser = 
       Intent.createChooser(intentChooser, 
         getString(R.string.user_reg_email_client_chooser_title)); 

     // Then create a list of LabeledIntent for the rest of the registered email apps 
     List<LabeledIntent> intentList = new ArrayList<LabeledIntent>(); 
     for (int i = 1; i < resInfo.size(); i++) { 
      // Extract the label and repackage it in a LabeledIntent 
      ri = resInfo.get(i); 
      String packageName = ri.activityInfo.packageName; 
      Intent intent = pm.getLaunchIntentForPackage(packageName); 
      intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon)); 
     } 

     LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]); 
     // Add the rest of the email apps to the picker selection 
     openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents); 
     startActivity(openInChooser); 
    } 
+1

Initialement, cela ressemblait à du code très effrayant, mais ça a quand même fonctionné! J'ai ajouté une instruction else pour les téléphones qui n'ont pas de client de messagerie installé. – user1354603

+1

Ce code était la seule solution que j'ai trouvé pour m'aider à ouvrir la boîte de réception (sans écrire un nouveau message), et en même temps il vous donne un dialogue sélectif, ce qui est génial, merci Larisa – Sniper

+0

là ça marche. Vous devriez l'emballer dans un assistant et le lancer sur GitHub Gists. THNX! – CelticParser

Questions connexes