2012-12-12 10 views
10

Czy istnieje sposób programowego otwierania klienta poczty e-mail, bez konieczności wymuszania wysyłania wiadomości? Chcę tylko aplikację, aby pozwolić użytkownik otworzyć klienta poczty e-mail w celu sprawdzenia :)Otwieranie klienta poczty e-mail przez Intent (ale nie wysyłanie wiadomości)

Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("message/rfc822"); 
    startActivity(Intent.createChooser(intent, "")); 

Ten kod działa, ale to zmusza użytkownika do wysyłania nowej wiadomości.

Odpowiedz

1

myślę, że należy wymienić Intent.ACTION_SEND do Intent.ACTION_VIEW,
jestem pewien, że to będzie działać, jak to poprosi z listy aplikacji, które tego wsparcia typu MIME "message/rfc822" to będzie uwzględnij domyślnego klienta poczty e-mail w urządzeniu innym niż Gmail.

Jak o tym kodzie:

final Intent emailLauncher = new Intent(Intent.ACTION_VIEW); 
emailLauncher.setType("message/rfc822"); 
try{ 
     startActivity(emailLauncher); 
}catch(ActivityNotFoundException e){ 

} 
19
Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_APP_EMAIL); 
    startActivity(intent); 
    startActivity(Intent.createChooser(intent, getString(R.string.ChoseEmailClient))); 

Ten rodzaj działał. Ale to otworzymy Gmail dla mnie, nawet ponieważ mam inne klientów pocztowych

+1

powinny zastosowania spróbować połowu na działalności startowym, aby uniknąć wyjątki jak nie masz aplikację e-mail. – ademar111190

+0

Czy zdarzyło Ci się kiedyś sprawić, że selektor działa? Otwiera dla mnie Gmail i mam zainstalowany inny klient poczty e-mail (myMail). – user1354603

+0

Możesz pominąć ostatnią linię. Wywołanie "startActivity (intent);" niejawnie otwiera selektor (chyba że ustawiono wartość domyślną), więc 'createChooser' nie jest niezbędny. –

4

Ten kod pojawi się okno dialogowe z listą klientów poczty. Kliknięcie jednego uruchomi aplikację:

try { 
    List<String> emailClientNames = new ArrayList<String>(); 
    final List<String> emailClientPackageNames = new ArrayList<String>(); 
    // finding list of email clients that support send email 
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
     "mailto", "[email protected]", null)); 
    PackageManager pkgManager = AppController.getContext().getPackageManager(); 
    List<ResolveInfo> packages = pkgManager.queryIntentActivities(intent, 0); 
    if (!packages.isEmpty()) { 
     for (ResolveInfo resolveInfo : packages) { 
      // finding the package name 
      String packageName = resolveInfo.activityInfo.packageName; 
      emailClientNames.add(resolveInfo.loadLabel(getPackageManager()).toString()); 
      emailClientPackageNames.add(packageName); 
     } 
     // a selection dialog for the email clients 
     AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
     builder.setTitle("Select email client"); 
     builder.setItems(emailClientNames.toArray(new String[]{}), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // on click we launch the right package 
      Intent intent = getPackageManager().getLaunchIntentForPackage(emailClientPackageNames.get(which)); 
       startActivity(intent); 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} catch (ActivityNotFoundException e) { 
    // Show error message 
} 
+0

To działa dla mnie! Dziękuję Ci bardzo. –

Powiązane problemy