Как решить проблему намерений электронной почты Android? - PullRequest
0 голосов
/ 15 июня 2019

У меня проблема с намерением отправки почты по электронной почте ..... Мне нужно открыть приложение электронной почты, чтобы пользователь мог оставить отзыв о моем приложении. Оно не открывается при использовании этого сообщения .. Вызывает исключение ActivityNotFoundException .. ... я использую свой телефон, а не эмулятор, и в моем телефоне есть приложения для электронной почты и электронной почты. Помогите мне решить ?? Вот мой код:

    Intent intent= new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.setType("text/plain");
    String[] mail={"someone@gmail.com"};
    intent.putExtra(Intent.EXTRA_SUBJECT,"");
    intent.putExtra(Intent.EXTRA_TEXT,"");
    intent.putExtra(Intent.EXTRA_EMAIL,mail);
    startActivity(intent);

Любые комментарии приветствуются:)

Ответы [ 3 ]

0 голосов
/ 15 июня 2019

В вашем случае, что ActivityNotFoundException, скорее всего, означает, что в вашем телефоне на вашем устройстве не установлено почтовое приложение по умолчанию, такое как Gmail, поэтому при запуске Intent вы получаете эту ошибку.

Вы можете попытаться обработать это исключение следующим образом:

try {
    startActivity(Intent.createChooser(i, "Send mail"));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(Activity.this, "no email app",Toast.LENGTH_SHORT).show();
}
0 голосов
/ 15 июня 2019

С андроида Документы , намерение позволяет вам запускать действие в другом приложении, описывая простое действие, которое вы хотели бы выполнить (например, «просмотреть карту» или «сделать снимок»). ) в объекте Intent. Этот тип намерения называется неявным намерением, потому что он не определяет компонент приложения для запуска, а вместо этого указывает действие и предоставляет некоторые данные, с которыми нужно выполнить действие.

Когда вы вызываете startActivity () или startActivityForResult () и передаете ему неявное намерение, система разрешает намерение приложению, которое может обработать намерение , и запускает соответствующее действие. Если есть более одного приложения, которое может обработать намерение, система предоставляет пользователю диалоговое окно, чтобы выбрать, какое приложение использовать.

Итак, в вашем случае система не смогла найти приложение для разрешения намерения, как упомянул @Tamir.

Для получения дополнительной информации просмотрите это сообщение о переполнении стека: Отправка сообщения по электронной почте

0 голосов
/ 15 июня 2019

у меня работает:

      String[] recipients;
            Intent intent = new Intent(Intent.ACTION_SEND);
                recipients = new String[]{"someone@gmail.com"};    

            intent.putExtra(Intent.EXTRA_EMAIL, recipients);
            intent.setType("text/html");
            intent.setPackage("com.google.android.gm");
           try {
            activity.startActivity(Intent.createChooser(intent, "Send"));
      }
         catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(Activity.this, "no email app",Toast.LENGTH_SHORT).show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...