Mã này sẽ hiển thị một hộp thoại với một danh sách các khách hàng email. Nhấp vào một ứng dụng sẽ khởi chạy ứng dụng:
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
}
Nguồn
2015-04-15 12:12:01
nên sử dụng thử bắt đầu hoạt động để tránh ngoại lệ như không có ứng dụng email. – ademar111190
Bạn đã bao giờ quản lý để cho phép người chọn hoạt động? Nó mở gmail cho tôi và tôi đã cài đặt một ứng dụng email khác (myMail). – user1354603
Bạn có thể bỏ qua dòng cuối cùng. Gọi 'startActivity (intent);' ngầm mở một trình chọn (trừ khi mặc định được thiết lập), vì vậy 'createChooser' không cần thiết. –