2017-04-03 2 views
0

J'essaie de créer un exemple d'application qui affiche le nom et le numéro de mes contacts locaux lors de l'appel entrant, tout fonctionne correctement mais ma boîte de dialogue n'apparaît que lorsque l'appel est terminé. Je veux montrer cette boîte de dialogue comme TrueCaller Application popup quand l'appel a commencé ou trouver n'importe quel résultat, ma boîte de dialogue a commencé correctement quand trouvé n'importe quel résultat mais je ne peux pas le montrer jusqu'à ce que l'appel soit fini. Je ne peux pas l'exécuter sur l'interface utilisateur Thread ma logique dans la classe de non-activité. De l'aide ?Comment faire pour ouvrir l'activité de dialogue lorsque l'application est fermée

code suivant montrent comment je commence mon activité

Intent intent = new Intent(ctx, MyDialog.class); 
intent.putExtra(MyDialog.NUMBER, number); 
intent.putExtra(MyDialog.CONTACT, name); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
ctx.startActivity(intent); 

Et je définir mon activité dans mainfaist fichier

<activity 
     android:name=".ui.MyDialog" 
     android:excludeFromRecents="true" 
     android:screenOrientation="portrait" 
     android:theme="@style/dialog_activity_style"/> 

Répondre

0

Vous devez jeter context dans votre Activity.

comme ci-dessous le code:

Intent intent = new Intent(ctx, MyDialog.class); 
intent.putExtra(MyDialog.NUMBER, number); 
intent.putExtra(MyDialog.CONTACT, name); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
//change below line in your code 
((Activity)ctx).startActivity(intent); 
+0

J'essaie maintenant, mais l'application arrêté et le dialogue ne Montré 'ne peut pas être jeté à android.app .Activity' – Azak

+0

Oui, vous ne pouvez pas convertir le contexte d'application en Activity. Vous devez passer le contexte de l'activité en cours. –

0

Vous devez mettre en œuvre par le service intention. Lorsque l'appel est connecté service de démarrage et de dialogue d'affichage du service comme:

AlertDialog dialog = builder.create(); 
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
dialog.show(); 

et autorisation définie dans le manifeste

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />