0

Je crée une application, et dans cette partie du processus, l'utilisateur appuie sur un bouton d'envoi et il apparaît en demandant quel client de messagerie il veut utiliser.OnActivityResult - Ne pas exécuter de code si la méthode n'est pas complète

Actuellement, lorsque je clique sur annuler, le code sera toujours exécuté, comme pour aller à l'activité suivante et afficher le message toast. Ce que je voudrais, c'est que cela ne s'exécute pas si l'utilisateur clique sur annuler, mais s'ils envoient l'email (ou au moins vont dans le client de messagerie), alors exécutez le code.

Voici mes lignes de courant de code:

public class Activity extends AppCompatActivity { 
protected static final int EMAIL_SENT = 0; 

Mon intention d'obtenir toutes les informations email:

Intent email = new Intent(Intent.ACTION_SENDTO); 
    email.setData(Uri.parse("mailto:")); 
    email.putExtra(Intent.EXTRA_EMAIL, TO); 
    email.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.subject, name)); 
    email.putExtra(Intent.EXTRA_TEXT, message); 

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

Enfin, le onActivity:

 @Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if (requestCode == EMAIL_SENT && resultCode == Activity.RESULT_OK) { 
    }else{ 
      Intent submit = new Intent(this,HomeActivity.class); 
      startActivity(submit); 
      Toast toast = Toast.makeText(getApplicationContext(), "Request Submitted", Toast.LENGTH_LONG); 
      toast.show(); 
    } 
    finish(); 
} 
+0

Vous n'avez pas passé 'EMAIL_SENT' comme code de demande. Vous devez modifier ce 'startActivityForResult (Intent.createChooser (email," Choisissez un client de messagerie: "), EMAIL_SENT);' – Piyush

+0

Je pense que vous avez égaré les lignes dans le bloc * else *. Mettez-le dans * si * bloquer dans onActivityResult et essayez? – Raghavendra

+0

J'ai essayé les deux méthodes. Mettre le code de demande ne fait rien. J'ai échangé le code et l'ai placé dans le bloc if, mais maintenant il ne va même pas à la classe HomeActivity.class, il retourne juste à la classe précédente (nommée Selection) et n'exécute pas du tout le code. – Hawkfan69

Répondre

0

ne soutient pas toutes les activités résultat retour intention. Spécialement si c'est une activité système connue. Vous pouvez faire une certaine logique dans votre onPause() & onResume() pour vérifier si les données envoyées ou non (Peut-être en interrogeant une table de base de données des courriels).

0

Si je comprends bien, il vous suffit d'échanger votre bloc if-else:

if (requestCode == EMAIL_SENT && resultCode == Activity.RESULT_OK) 
{ 
    Intent submit = new Intent(this,HomeActivity.class); 
    startActivity(submit); 
    Toast toast = Toast.makeText(getApplicationContext(), "Request Submitted", Toast.LENGTH_LONG); 
    toast.show(); 
} 
else 
{ 

} 
+0

Essayé que, maintenant il n'exécute pas du tout le code, comme dans ne pas même travailler si j'appuie sur le bouton d'annulation, pour une raison quelconque cela ne fonctionnera que s'il est dans le bloc else. – Hawkfan69