Android -finish()の後にダイヤラーアイコンが最近使用されたアプリに配置されます
-
18-09-2019 - |
質問
私のアプリケーションでは、ダイヤラーまたは連絡先からコールがダイヤルされたときに出て行く通話を検出します。
これは正常に動作し、その後、コールを検出したというダイアログをポップアップし、ユーザーがボタンを押して、そのアクティビティのfinish()を呼び出すダイアログを閉じます。
私がホームキーを保持して最近使用されたアプリを持ち出すときに、ダイヤラーアイコンがそこにあることを除いて、すべて正常に機能します。
そして、それがクリックされると、ダイアログのアクティビティが死んでなくなって前景に戻すことができない場合、ダイアログが前景に焦点を合わせます。
これが私の意味の写真です。
ダイヤラーエラーhttp://img515.imageshack.us/img515/8505/devicev.png
それで、2つの質問が発生します。なぜダイヤラーアイコンがそこに配置されるのでしょうか、そしてなぜそれが私のアクティビティを前景に思い出させるのでしょうか?
ダイアログテーマがあるそのアクティビティのコードは次のとおりです。
public class CallDialogActivity extends Activity{
boolean isRecording;
AudioManager audio_service;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
audio_service = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Bundle b = this.getIntent().getExtras();
String number = b.getString("com.networks.NUMBER");
String name = b.getString("com.networks.NAME");
TextView tv = (TextView) findViewById(R.id.voip) ;
tv.setText(name);
Intent service = new Intent(CallAudio.CICERO_CALL_SERVICE);
startService(service);
final Button stop_Call_Button = (Button) findViewById(R.id.widget35);
this.setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
stop_Call_Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent service = new Intent(CallAudio._CALL_SERVICE);
//this is for Android 1.5 (sets speaker going for a few seconds before shutting down)
stopService(service);
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(setIntent);
finish();
isRecording = false;
}
});
final Button speaker_Button = (Button) findViewById(R.id.widget36);
speaker_Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(true){
audio_service.setSpeakerphoneOn(false);
}
else{
audio_service.setSpeakerphoneOn(true);
}
}
});
}
@Override Protected void onresume(){super.onresume();
}
@Override
protected void onPause() {
super.onPause();
}
public void onCofigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
}
AudioreCordを使用してマイクとAudioTrackから録音するサービスを呼び出して、イヤホンをプレイします。
なぜこれが起こっているのか分かりますか?
解決 2
いくつかの調査の後、HTCのダイヤラーの実装にはいくつかのバグが含まれているように見えますが、電話がそれをオーバーライドするためにダイヤラーアイコンが表示されることはありません。
他のヒント
最近使用されたアプリメニューは、アプリが終了したかどうかは気にしません。もしそうなら、それを再起動するだけです。現在実行されているものではなく、最近使用されたものを示しています。