Je dois être capable de savoir quand une activité lancée (via un intent) est terminée, comment puis-je le faire ?
Voici ce que j'ai :
alertDialog.setButton2("Texte", 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);
// -- ouvrir l'activité de messagerie texte
startActivity(intent);
// -- J'ai besoin de réinitialiser l'activité appelante maintenant, mais APRÈS que l'activité de messagerie texte soit terminée. Pour l'instant, le SMS se ferme immédiatement car je n'ai pas d'attente dans...
finish();
startActivity(getIntent());
}
});
MODIFICATION #1
Conformément aux suggestions ci-dessous, j'ai apporté quelques modifications. Maintenant, cependant, l'activité SMS lancée reste simplement "en attente" une fois le texte envoyé. Je n'arrive pas à comprendre comment la faire revenir à l'activité appelante. Voici ce que j'ai :
alertDialog.setButton2("Texte", 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());
}