Android: Diferença em Action_send entre o nível 2 e 5 da API?
-
20-09-2019 - |
Pergunta
Eu tenho um aplicativo Android que deseja iniciar um email. O código a seguir funciona em um emulador de nível 5 da API, mas não em um emulador ou dispositivo de nível 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);
}
A exceção jogada diz:
No Activity found to handle Intent { action=android.intent.action.SEND (has extras) }
Posso enviar manualmente email de todos os dispositivos (emulados e reais) testados, e isso funciona na API de nível 5. A documentação sobre Intent.action_send diz que está ativa desde o nível 1 da API.
Solução
Eu acho que a diferença pode não estar tanto na API, mas nos aplicativos disponíveis no sistema. O aplicativo de email em particular era bastante limitado no Android 1.1 e 1.5, por isso não ficaria surpreso se não fosse capaz de lidar com o Action_send.
Pode ser que a mesma ação funcione se você tiver o aplicativo Gmail configurado, mas não apenas com o aplicativo de email (como no emulador).