Android:разница в ACTION_SEND между уровнями api 2 и 5?
-
20-09-2019 - |
Вопрос
У меня есть приложение для Android, которое хочет инициировать отправку электронного письма.Следующий код работает в эмуляторе api уровня 5, но не на эмуляторе или устройстве уровня 2:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Email from MyApp");
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"This email was autogenerated by MyApp.");
try {
startActivity(emailIntent);
} catch (Exception e) {
Log.e(TAG,e.getMessage());
showDialog(DIALOG_CANTSENDMAIL);
}
Выданное исключение гласит:
No Activity found to handle Intent { action=android.intent.action.SEND (has extras) }
Я могу вручную отправлять электронную почту со всех протестированных устройств (эмулированных и реальных), и это работает в API уровня 5.Документация по Intent.ACTION_SEND говорит, что он активен с уровня API 1.
Решение
Я думаю, что разница может быть не столько в API, сколько в приложениях, доступных в системе.Приложение электронной почты, в частности, было довольно ограничено в Android 1.1 и 1.5, поэтому я бы не удивился, если бы оно не смогло обработать ACTION_SEND.
Также может случиться так, что то же действие сработает, если у вас настроено приложение Gmail, но не только с приложением электронной почты (как в эмуляторе).