इस कोड को ईमेल क्लाइंट की एक सूची के साथ एक संवाद दिखाई देगा। एक पर क्लिक करने से एप्लिकेशन लॉन्च होगा:
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
}
स्रोत
2015-04-15 12:12:01
किसी भी ईमेल ऐप जैसे अपवादों से बचने के लिए प्रारंभ गतिविधि पर प्रयास करने का प्रयास करना चाहिए। – ademar111190
क्या आपने कभी भी chooser काम करने का प्रबंधन किया था? यह मेरे लिए जीमेल खोलता है, और मेरे पास एक और ईमेल क्लाइंट स्थापित है (MyMail)। – user1354603
आप अंतिम लाइन छोड़ सकते हैं। कॉलिंग 'स्टार्ट एक्टिविटी (इरादा);' एक चयनकर्ता को स्पष्ट रूप से खुलता है (जब तक कोई डिफॉल्ट सेट नहीं होता है), इसलिए 'CreateChooser' अनावश्यक नहीं है। –