2012-03-26 12 views
0

Ich versuche, eine Aktivität zu starten, wenn ich einen eingehenden Anruf für mein Android-Handy bekam. Dafür starte ich im Rufzustand eine Aktivität und setze einige Flags, um diese Aktivität nach vorne zu bringen. Hier ist der Code:Bringen Sie eine Aktivität nach vorne in android Broadcast Reciever

 Intent intent2open = new Intent(ctx, Main.class); 
    intent2open.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK |  Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); 
    intent2open.setAction("android.intent.action.VIEW"); 
    intent2open.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent2open.setAction(Intent.ACTION_MAIN); 
    intent2open.addCategory(Intent.CATEGORY_LAUNCHER); 
     intent2open.putExtra(name, value); 
    startActivity(intent2open); 

von oben Code, ich habe nicht meine erforderliche Ausgabe, einige Fälle App gestartet wird, wenn ich meinen Anruf angenommen oder abgelehnt. In einigen anderen Fällen wird es gestartet, wenn der Status klingelt. Ich kann dieses Problem nicht beheben. Wie kann ich meine Aktivität nach vorne bringen?

Vielen Dank im Voraus, Lokesh.

Antwort

0

Set android:launchMode="singleTop" auf Ihre Aktivität in einem offenkundigen und Ihre Flags gesetzt wie:

intent2open.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT 
    |Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 
    |Intent.FLAG_ACTIVITY_NEW_TASK); 

* zumindest es funktioniert gut für mich in meinem Projekt


aktualisieren

Die Erhöhung der Priorität im Manifest für den Intent-Filter Ihrer Sendung kann ebenfalls hilfreich sein Sie in diesem Fall:

<!-- Higher numbers have a higher priority --> 
<intent-filter android:priority="100"> 
+0

Danke Waqas, schon habe ich meinen Klassenmodus als singleTop. Aber keine Verwendung .. –

+0

Wenn es auch noch eine andere Aktivität geben soll (in Ihrem Fall Call-Aktivität), dann ist es ungewiss zu wissen, welches als erstes darauf kommt, wer zuerst Broadcast empfängt - je nach Priorität. Siehe meine aktualisierte Antwort: http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority – waqaslam

+0

Abgesehen von Ihren Code-Zeilen habe ich meinen Klassenstartmodus auf "singleInstance" geändert. –

Verwandte Themen