Android: Unterschied in ACTION_SEND zwischen api Ebene 2 und 5?
-
20-09-2019 - |
Frage
ich einen Android-App, die eine E-Mail initiieren will. Der folgende Code arbeitet in einem api Level 5-Emulator, aber nicht auf einem Level 2-Emulator oder Gerät:
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);
}
Die Ausnahme ausgelöst sagt:
No Activity found to handle Intent { action=android.intent.action.SEND (has extras) }
Ich kann manuell E-Mail von allen Geräten (emuliert und real) getestet, und das funktioniert in Stufe 5 api senden. Die Dokumentation auf Intent.ACTION_SEND sagt, es ist seit dem API-Ebene 1 aktiv.
Lösung
Ich denke, der Unterschied in der API nicht so viel sein, aber in den Anwendungen auf dem System zur Verfügung. Der E-Mail-App wurde insbesondere in Android 1.1 und 1.5 recht begrenzt, so würde ich nicht überrascht sein, wenn sie nicht in der Lage ist ACTION_SEND zu behandeln.
Könnte auch sein, dass die gleiche Aktion funktioniert, wenn Sie die Google Mail-Anwendung konfiguriert haben, aber nicht mit der E-Mail-App nur (wie im Emulator).