Используйте emailIntent.setPackage(PackageName of Email app);
перед тем, как позвонить startActivity.
Вам необходимо установить почтового клиента, имя пакета, но в устройствах Samsung com.sec.android.email
по умолчанию встроенный почтовый клиент, но в HTC это com.htc.android.mail
и так далее. Поэтому сначала вам нужно отфильтровать это приложение, а затем установить намерение. Я добавляю решение
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
"mailto", userInput.getText().toString(), null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Press Release");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"Please view this press release");
// Identify the package name of email client and set to intent
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(emailIntent, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
if (info.activityInfo.packageName.toLowerCase().contains(".android.email")
|| info.activityInfo.name.toLowerCase().contains(".android.email")) {
emailIntent.setPackage(info.activityInfo.packageName);
// And now call
startActivity(Intent.createChooser(emailIntent, "Send mail using..."));
}
}
}
Вы должны прочитать Android: How to get the native Email clients package name
Он покажет все возможные действия по умолчанию, которые доступны в устройстве. Поскольку устройство будет иметь приложение Gmail, этот выборщик также покажет Gmail. –
Вы имели в виду, что хотите открыть Email Composer напрямую или только для удаления Gmail.? – SilentKiller
Мне нужно удалить gmail из этого намерения, как я понимаю, но скажите, есть ли способ напрямую перейти к составителю электронной почты, не показывая оба этих значка. –