2014-11-03 2 views
2

Я использую приведенный ниже код, чтобы начать Intent в Android, чтобы отправить электронное письмо. До Android Lollipop (API уровня 21) это работало нормально. К сожалению, в Android Lollipop это вызывает ошибку «Неподдерживаемое действие».Намерение электронной почты больше не работает в Android Lollipop

Intent intent = new Intent(Intent.ACTION_SENDTO); 
intent.setType("message/rfc822"); 
intent.setData(Uri.parse("mailto:" + email)); 
startActivity(intent); 

Это довольно простой, он просто передает адрес электронной почты и позволяет пользователю выбрать, какое приложение использовать.

Как мне настроить свой код, чтобы сделать эту работу на уровне api? Мой минимальный уровень API - 16 (JellyBean).

Редактировать Я включил MIME-тип в соответствии с комментариями и ответами.

+1

Вы не забыли установить тип MIME? Что-то вроде: 'intent.setType (" text/plain ");'? –

+0

@Funkystein Нет, настройка MIME ничего не меняет. Я обязательно укажу его для аккуратности. –

ответ

5

Я получил его. Это было вызвано тем, что не настроил электронную почту. После установки одного из них, по крайней мере, в одном приложении электронной почты, он работает.

Это не проблема с Lollipop.

0

Вы должны добавить intent.setType("message/rfc822"); посмотреть подробный ответ: How can I send emails from my Android application?

+0

Нет, все еще бросает «Неподдерживаемое действие». –

+0

Вы скопировали код в ответ? Я вижу, что вы используете ACTION_SENDTO, пока ссылка использует ACTION_SEND – rickyalbert

+0

@ rickalbert, я обновлю свой вопрос, чтобы включить тип MIME. Я использую ACTION_SENDTO, потому что я не отправляю вложение в соответствии с [документацией] (https://developer.android.com/guide/components/intents-common.html#Email). –

-1

По умолчанию это намерение будет поглощено пучком Android, я не ожидаю такого поведения, поэтому считаю, что в Lollipop должно быть что-то не так.

+0

Привет и добро пожаловать в Stackoverflow. Ваш вопрос предъявляет серьезные претензии, и я думаю, вы должны попытаться проверить это с некоторыми ресурсами и, как правило, немного расширить свой ответ. Мы ищем профессиональные ссылки здесь. Благодаря! – avalancha

+0

Согласно моему собственному ответу: я не настроил никаких электронных писем на устройстве. Следовательно, Android не смог найти приложения, которые могли бы что-то сделать с моими намерениями. Это и привело к поведению. –

+0

@BenjaminTodts Android-луч утверждает, что это намерение может быть обработано само собой, даже если вы добавили учетную запись электронной почты. Android Beam по-прежнему остается выбором в приложении, если у вас нет приложения по умолчанию, которое будет использовать это намерение. – ttanxu

0

Из-за моего тестирования это проблема, которая возникает, когда URI намерения (от setData()) ничего не соответствует, и вы работаете на одном из официальных эмуляторов Android. По-видимому, это не происходит на реальных устройствах, поэтому это не должно быть проблемой реального мира.

Вы можете использовать этот код, чтобы определить, когда это произойдет, прежде чем начать намерение:

ComponentName emailApp = intent.resolveActivity(getPackageManager()); 
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback"); 
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction); 

(. Название активности, который показывает метод «неподдерживаемый действие» действие com.android.fallback.FallbackActivity)

Смежные вопросы