2014-12-17 14 views
5

Sono nuovo, ma cosa c'è di sbagliato nel mio frammento di codice? Viene visualizzato l'errore: "Questa azione non è attualmente supportata" quando seleziono il collegamento. Ecco il mio codice:Mailto Android: errore "azione non supportata"

public void addEmail() { 

    TextView txt = (TextView) findViewById(R.id.emailtext); 

    txt.setOnClickListener(new View.OnClickListener(){ 


     public void onClick(View v){ 
      Intent intent = new Intent(); 
      String uriText = 
        "mailto:youremail[email protected]" + 
        "?subject=" + URLEncoder.encode("some subject text here") + 
        "&body=" + URLEncoder.encode("some text here"); 

       Uri uri = Uri.parse(uriText); 

       Intent sendIntent = new Intent(Intent.ACTION_SENDTO); 
       sendIntent.setData(uri); 
       startActivity(Intent.createChooser(sendIntent, "Send email")); 

    }}); 

} 

Molte grazie!

+0

@see https://stackoverflow.com/questions/2197741/how-can-i-send-emails-from- my-android-application – shkschneider

+0

@shkschneider, come si risolve l'errore? – Sam

+0

Mi sono imbattuto in questo nell'emulatore di Android 4.0.2 quando non avevo ancora impostato un account di posta elettronica nel client di posta elettronica Android. La configurazione di un account nel client ha risolto il problema. – Sam

risposta

1

Prova questa, ha funzionato per me:

public void addEmail() { 

    TextView txt = (TextView) findViewById(R.id.emailtext); 

    txt.setOnClickListener(new View.OnClickListener(){ 

    public void onClick(View v){ 

      String[] emails = {"[email protected]"}; 
      String subject = "your subject"; 
      String message = "your message"; 

      Intent email = new Intent(Intent.ACTION_SEND); 
      email.putExtra(Intent.EXTRA_EMAIL, emails); 
      email.putExtra(Intent.EXTRA_SUBJECT, subject); 
      email.putExtra(Intent.EXTRA_TEXT, message); 

      // need this to prompts email client only 
      email.setType("message/rfc822"); 

      startActivity(Intent.createChooser(email, "Choose an Email client :")); 
    }}); 

} 
+0

Ho testato e confermato che questo funziona. Sembra che il problema sia stato causato dall'uso di 'setData()' quando nessuna app corrisponde all'intento. – Sam

13

Il problema è probabilmente che si sta eseguendo su uno degli emulatori ufficiali Android e non hai ancora creato un account di posta elettronica su di esso. Gli emulatori aprono l'attività com.android.fallback.Fallback quando ciò accade, ma ciò non sembra avvenire su dispositivi reali.

È possibile rilevare questo prima di tentare di avviare l'intento utilizzando questo codice:

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