2009-11-20 12 views

risposta

27

Prova questa snippet:

/* Create the Intent */ 
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

/* Fill it with Data */ 
emailIntent.setType("plain/text"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); 

/* Send it off to the Activity-Chooser */ 
context.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

pezzi chiave: usando EXTRA_EMAIL per i vostri indirizzi e l'utilizzo createChooser() nel caso in cui l'utente ha più di un client di posta elettronica configurata.

+3

Grazie, ha funzionato :) Inizialmente ho provato qualcosa del genere, ma ho appena tirato su uno schermo di messaggistica e non l'app di posta elettronica. Penso che fosse perché, al momento, non avevo un account di posta elettronica impostato nell'emulatore? – scuba

+0

Cosa hai usato la parola chiave finale? Ciò si traduce in una sorta di ottimizzazione di cui non sono a conoscenza? – Scott

+0

Non ho scritto lo snippet. Personalmente, probabilmente non avrei usato la parola chiave finale lì. – CommonsWare

3

Hai provato

Intent intent = new Intent(
    Intent.ACTION_SENDTO, 
    Uri.parse("mailto:[email protected]") 
); 
startActivity(intent); 
+0

Ha dato un colpo, continua a ricevere il messaggio: Azione non supportata Questa azione non è attualmente supportata. In una bolla tipo Toast. Devo impostare qualcosa nel manifest per consentire alla mia app di utilizzare questo? – scuba

1

Penso che i veri problemi qui sono che si sta eseguendo l'emulatore ufficiale e il tuo intento non corrisponde a nulla.

Dal mio test, questo è un problema che si verifica quando l'URI dell'intenzione (da setData()) non corrisponde a nulla e si sta eseguendo su uno degli emulatori Android ufficiali. Questo non sembra accadere su dispositivi reali, quindi non dovrebbe essere un problema del mondo reale.

È possibile utilizzare questo codice per rilevare quando questo sta per accadere prima di lanciare l'intento:

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

(. Il nome dell'attività che mostra il metodo di azione "non supportato azione" è com.android.fallback.FallbackActivity)

Problemi correlati