次のコードを検討してください。
public void callPerson(String phonenumber){
String tel = "tel:" + phonenumber;
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(tel));
startActivity(intent);
// onPause();
// Toast.makeText(getActivity(), "this is a test toast", Toast.LENGTH_LONG).show();
}
ご想像のとおり、そのコードを実行すると、現在のアクティビティが一時停止し、後続のアクティビティ (ダイヤラー) が実行されます。電話が終わると、元のアクティビティが再び表示されます。
私の問題は、通話後にポップアップする「評価」ダイアログを導入したいときに発生します。
そのようなコードをどこに挿入しますか? さて、「startActivity(intent);」という行の直後に挿入すると、これは、最後の行 (トースト) のコメントを外すのと同じ (?) ことになります。これを行うと、「startActivity(intent);」行の後もコードが実行され続けることがわかります。-- 通話中にトーストが表示されます。
では、コードが実行され続けないようにするにはどうすればよいでしょうか。
「onPause()」も挿入しようとしたことがわかりますが、これも機能していないようです。
私は Android のライフサイクルを理解しているので、これを行う唯一の方法は、新しいダイアログ コードを onResume() に配置することですが、次のようなことも行う必要があります。
@Override
public void onResume(){
if (we are currently returning from phone call) {
//Dialog code here
}
}
しかし、もっと良い方法があるに違いないようです。助けてくれてありがとう!