Android - o ícone do discador é colocado em aplicativos usados recentemente após terminar ()
-
18-09-2019 - |
Pergunta
No meu aplicativo, detecto a chamada efetuada quando uma chamada é discada do discador ou dos contatos.
Isso funciona bem e, em seguida, abro uma caixa de diálogo dizendo que detectei a chamada e, em seguida, o usuário pressiona um botão para fechar a caixa de diálogo que chama finish() nessa atividade.
Tudo funciona bem, exceto que quando pressiono a tecla Home para abrir os aplicativos usados recentemente, o ícone do discador está lá.
E quando ele é clicado, a caixa de diálogo volta ao foco em primeiro plano, quando a atividade da caixa de diálogo deveria estar morta e não poder ser trazida de volta ao primeiro plano.
Aqui está uma imagem do que quero dizer.
Erro de discador http://img515.imageshack.us/img515/8505/devicev.png
Então surgem duas questões: por que o ícone do discador seria colocado ali e por que ele estaria trazendo minha atividade para primeiro plano?
Aqui está o código dessa atividade que tem um tema de diálogo:
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);
}
}
Ele chama um serviço que usa AudioRecord para gravar do microfone e AudioTrack para reproduzi-lo no fone de ouvido, nada no serviço a ver com o discador.
Alguém tem alguma ideia de por que isso pode estar acontecendo?
Solução 2
Depois de algumas pesquisas, parece que a implementação do discador da HTC contém alguns bugs, o ícone do discador nunca deve aparecer, pois o telefone deve substituí-lo.
Outras dicas
O menu de aplicativos usados recentemente não se importa se o aplicativo foi concluído.Ele apenas reinicia se for o caso.Ele mostra coisas que foram usadas recentemente, não coisas que estão em execução no momento.