2016-12-19 3 views
0

Ich verwende die Telefonnummer Absicht in Android wie folgt:Wie kann man feststellen, ob die Calling Intent im Hintergrund oder im Vordergrund läuft?

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:"+Uri.encode(phone_num.trim()))); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(callIntent); 

Der Paketname ist com.android.incallui. Ich möchte wissen, ob die aufrufende GUI im Hintergrund oder Vordergrund ausgeführt wird. Daher mache ich eine Funktion checkcallingGUI, es wird True zurückgegeben, wenn die aufrufende GUI im Vordergrund ausgeführt wird, und false, wenn das aufrufende Telefon im Hintergrund ausgeführt wird. Ist es möglich, es zu überprüfen? Danke, dass alle

+0

was meinst du mit 'Aufruf GUI'? Deine Aktivität? – marmor

+0

Sie können Ihre Callbacks für Aktivitätsstatus verfolgen und haben nur einen booleschen Satz in Ihrer 'onPause()' und 'onResume()' Methoden der GUI-Aktivität –

+0

@ marmor: Nein. Die aufrufende GUI Absicht des Telefons. Zum Beispiel, wenn ich eine Telefonnummer wähle, dann drücke ich die Home-Taste, die rufende GUI läuft noch, aber sie läuft im Hintergrund. – Jame

Antwort

0

Sie benötigen ein listener auf TelephonyManager Rufzustände registrieren (IDLE, OFFHOOK, RINGING) und verwenden Sie die zuletzt empfangenen Zustand zu wissen, ob ein Anruf im Gange ist oder nicht.

Mit dieser Methode können Sie einen Listener registrieren: https://developer.android.com/reference/android/telephony/TelephonyManager.html#listen(android.telephony.PhoneStateListener, int)

liest über mögliche angegeben und ihre Bedeutung hier: https://developer.android.com/reference/android/telephony/TelephonyManager.html#CALL_STATE_IDLE

Und siehe vollständigen Code hier: https://stackoverflow.com/a/14537914/819355

EDIT

Sie können das Keyguar verwenden dManager Dienst zu überprüfen, ob das Gerät gesperrt ist/secure finden Sie diese Methode: https://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardLocked()

Wenn ich nicht irre, wenn der Anruf-Zustand nicht frei ist, und die Tastensperre aktiviert ist, werden Sie das bekommen Vollbild-UI, wenn nicht, sollte es im Hintergrund sein.

versuchen, etwas wie folgt aus:

KeyguardManager kg = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
if (kg.isKeyguardLocked()) { 
    // If telephony-state is also not IDLE, then the call UI should be full screen. 
} 
+0

Ich habe es vorher versucht, aber es sagt mir nicht die aufrufende GUI im Hintergrund oder Vordergrund. – Jame

+0

siehe meine Bearbeitung dann – marmor

Verwandte Themen