как показывать промежуточные объявления перед открытием второго действия

Стратегия использования .setType("message/rfc822") или ACTION_SEND, похоже, также соответствует приложениям, которые не являются почтовыми клиентами, такими как Android Beam и Bluetooth .

Использование ACTION_SENDTO и mailto: URI, кажется, работает отлично, и рекомендуется в документации разработчика . Однако, если вы делаете это на официальных эмуляторах и не настроено никаких учетных записей электронной почты (или нет почтовых клиентов), вы получаете следующую ошибку:

Неподдерживаемое действие

Это действие в настоящее время не поддерживается.

blockquote>

Как показано ниже:

Unsupported action: That action is not currently supported. [/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();
}

Найти дополнительную информацию в документации разработчика .

0
задан yash rai 30 December 2018 в 17:39
поделиться