Android: differenza di ACTION_SEND tra il livello di API 2 e 5?
-
20-09-2019 - |
Domanda
Ho un app Android che vuole avviare una e-mail. Il seguente codice funziona in un'API di livello 5 emulatore, ma non su un emulatore di livello 2 o dispositivo:
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);
}
L'eccezione generata dice:
No Activity found to handle Intent { action=android.intent.action.SEND (has extras) }
Posso inviare manualmente e-mail da tutti i dispositivi (emulate e reali) testati, e questo lavora a Livello 5 api. La documentazione su Intent.ACTION_SEND dice che è attiva dal livello di API 1.
Soluzione
Credo che la differenza può essere non tanto nel API, ma nelle applicazioni disponibili sul sistema. L'applicazione e-mail, in particolare, era piuttosto limitata in Android 1.1 e 1.5, quindi non sarei sorpreso se non fosse in grado di gestire ACTION_SEND.
Potrebbe anche essere che la stessa azione funziona se è stata l'applicazione Gmail configurato, ma non solo con l'applicazione e-mail (come nell'emulatore).