Dans mon application, je détecte l'appel sortant lorsqu'un appel est composé à partir du numéroteur ou des contacts.Android - l'icône de numérotation est placée dans les applications récemment utilisées après la fin()
Cela fonctionne bien et je puis pop une boîte de dialogue disant que j'ai détecté l'appel et l'utilisateur appuie sur un bouton pour fermer la boîte de dialogue qui appelle finish() sur cette activité.
Tout fonctionne bien, sauf que lorsque je maintiens la touche d'accueil pour afficher les applications récemment utilisées, l'icône de numérotation est là.
Et quand on clique dessus la boîte de dialogue est ramené au point au premier plan lorsque l'activité de dialogue devrait être mort et disparu et ne pas être en mesure d'être ramené au premier plan.
Voici une image de ce que je veux dire.
Dialer error http://img515.imageshack.us/img515/8505/devicev.png
Alors deux questions se posent, pourquoi l'icône du composeur être placé là et se pourquoi serait-il rappelant mon activité au premier plan?
Voici le code de cette activité qui a un thème de dialogue:
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 protégé vide onResume() { super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
public void onCofigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
}
Il appelle un service qui utilise audiorecord pour enregistrer à partir du micro et AudioTrack à jouer sur l'écouteur, rien dans le service à faire avec le transmetteur téléphonique.
Quelqu'un a-t-il une idée de ce qui pourrait arriver?
Je pense qu'il peut être le contexte que je passe dans certains de mes méthodes, pourrait devenir le composeur le contexte parce que le dialogue se tiré à partir de là lorsqu'un appel sortant est détecté? –