. 하나를 클릭하면 응용 프로그램이 실행됩니다.
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
}
은 전자 메일 응용 프로그램이없는 것과 같은 예외를 피하기 위해 시작 활동에 시도 잡기를 사용해야합니다. – ademar111190
선택기가 작동하도록 관리 했습니까? 나를 위해 Gmail을 열고 다른 이메일 클라이언트가 설치되어 있습니다 (myMail). – user1354603
마지막 줄을 생략 할 수 있습니다. 'startActivity (intent);를 호출하면 (기본값이 설정되어 있지 않는 한) 선택자가 암시 적으로 열리므로'createChooser'는 필수가 아닙니다. –