android notifier lorsque startActivity intention terminée?
J'ai besoin d'être en mesure de dire quand un donné naissance à l'activité (par le biais d'un but) a terminé, comment pourrais-je le faire?
C'est ce que j'ai:
alertDialog.setButton2("Text", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String uri = "smsto:" + "";
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri));
intent.putExtra("sms_body", PASSWORD_GENERATOR
.generatePasswordForSeed(seedText, hourToUse));
intent.putExtra("compose_mode", true);
//-- open the text message activity
startActivity(intent);
//-- I need to reset the calling activity now, but AFTER the text message activity has completed. Right now the SMS closes right away as I have no wait in...
finish();
startActivity(getIntent());
}
});
EDIT #1
Par les suggestions ci-dessous, j'ai fait quelques modifications. Maintenant, cependant, l'lancé activité SMS juste "là" une fois que le texte est envoyé. Je ne peux pas comprendre comment le faire revenir à la vocation de l'activité. C'est ce que j'ai:
alertDialog.setButton2("Text", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String uri = "smsto:" + "";
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri));
intent.putExtra("sms_body", PASSWORD_GENERATOR
.generatePasswordForSeed(seedText, hourToUse));
intent.putExtra("compose_mode", true);
startActivityForResult(intent, Activity.RESULT_OK);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
startActivity(getIntent());
}
}, new IntentFilter("SMS_SENT"));
ContentResolver contentResolver = getContentResolver();
Handler handler = new Handler();
contentResolver.registerContentObserver(Uri
.parse("content://sms"), true, new ContentObserver(
handler) {
@Override
public boolean deliverSelfNotifications() {
setResult(Activity.RESULT_OK);
finish();
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
setResult(Activity.RESULT_OK);
finish();
}
});
}
});
alertDialog.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
finish();
startActivity(getIntent());
}
- hey, @javamonkey79 - comment c'était fini?
Vous devez vous connecter pour publier un commentaire.
Suivi de Réponse pour la deuxième question:
Par curiosité, avez-vous pensé à envoyer le texte sans la création d'une activité? La raison pour laquelle je demande c'est parce qu'il semble, d'après ce que je peux dire, aucune expérience de l'utilisateur qui se passe au sein de votre activité SMS. Si vous n'avez pas de points de vue et les interactions de l'utilisateur, puis peut-être juste la définition d'un fil ou de la création d'une classe d'aide pour faire le travail.
Original de la Réponse pour la première question:
Essayez d'utiliser startActivityForResult(Intent, int). Votre activité peut être averti quand le message texte activité de fin de.
Utilisation
startActivityForResult(intent, positiveinteger);
Faire ce que vous voulez faire, sur la mise en route de l'activité lorsque vous pensez à l'activité a terminé avec succès, ne
setResult(Activity.RESULT_OK);
finish();
Et à l'activité qui a commencé à remplacer
onActivityResult()
méthode. Et de tester si votre appelé activité fini le travail.Jamais jamais jamais jamais utiliser
Activity.RESULT_OK
pourrequestCode
, parce qu'il est négatif constant. Et les Docs dit queonActivityResult()
méthode sera appelée pour chaque entier positifrequestCode
:De réécriture et de suivre ce
Comment vous lancer l'activité de résultat:
Dans votre
startNewOne
activité vous avez terminé avec le résultat comme:Comment utilisez-vous
onActivityResult()
méthode:setResult()
et puisfinish()
. N'oubliez pas les autorisations 🙂Malheureusement, il vous faudra utiliser
SmsManager
Utiliser ceci: La Messagerie SMS Android | mobiForge
Vous pouvez recevoir le
SMS_SENT
Note:
Assurez-vous de redémarrer votre activité à l'aide de
onCreate()
Pour répondre à ta nouvelle question, vous pouvez ajouter
exit_on_sent
à l'intention, qui sera la cause de l'activité SMS de retour après l'envoi d'une invitation.Malheureusement, on dirait qu'il renvoie toujours un
resultCode
deActivity.RESULT_CANCELLED
, si vous le faites de cette façon, ou si ils ont frappé le bouton de retour, de sorte que vous ne pouvez pas dire si l'utilisateur a envoyé le texte ou non.