Стратегия использования .setType("message/rfc822")
или ACTION_SEND
, похоже, также соответствует приложениям, которые не являются почтовыми клиентами, такими как Android Beam и Bluetooth .
Использование ACTION_SENDTO
и mailto:
URI, кажется, работает отлично, и рекомендуется в документации разработчика . Однако, если вы делаете это на официальных эмуляторах и не настроено никаких учетных записей электронной почты (или нет почтовых клиентов), вы получаете следующую ошибку:
Неподдерживаемое действие
Это действие в настоящее время не поддерживается.
blockquote>Как показано ниже:
[/g6]
It оказывается, что эмуляторы разрешают намерение к активности под названием
com.android.fallback.Fallback
, которая отображает указанное выше сообщение. По-видимому, это по дизайну.Если вы хотите, чтобы ваше приложение обходилось, чтобы оно также корректно работало на официальных эмуляторах, вы можете проверить его, прежде чем пытаться отправить электронное письмо:
private void sendEmail() { Intent intent = new Intent(Intent.ACTION_SENDTO) .setData(new Uri.Builder().scheme("mailto").build()) .putExtra(Intent.EXTRA_EMAIL, new String[]{ "John Smith
" }) .putExtra(Intent.EXTRA_SUBJECT, "Email subject") .putExtra(Intent.EXTRA_TEXT, "Email body") ; ComponentName emailApp = intent.resolveActivity(getPackageManager()); ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback"); if (emailApp != null && !emailApp.equals(unsupportedAction)) try { // Needed to customise the chooser dialog title since it might default to "Share with" // Note that the chooser will still be skipped if only one app is matched Intent chooser = Intent.createChooser(intent, "Send email with"); startActivity(chooser); return; } catch (ActivityNotFoundException ignored) { } Toast .makeText(this, "Couldn't find an email app and account", Toast.LENGTH_LONG) .show(); } Найти дополнительную информацию в документации разработчика .