2016-08-14 6 views
2

ich den folgenden Code habe Telefonstatus in meiner Bewerbung:Android PhoneStateListener falscher Zustand

private PhoneStateListener phoneListener = new PhoneStateListener(){ 
    public void onCallStateChanged(int state,String incomingNumber){ 
     switch(state){ 
      case TelephonyManager.CALL_STATE_IDLE: 
       Log.i(TAG, "IDLE"); 
       break; 
      case TelephonyManager.CALL_STATE_OFFHOOK: 
       Log.i(TAG, "OFFHOOK"); 
       break; 
      case TelephonyManager.CALL_STATE_RINGING: 
       Log.i(TAG, "RINGING"); 
       break; 
     } 
    } 
}; 

Alle funktionieren auf zwei Emulatoren (Android 6.0 und Android 4.4). Aber auf meinem realen Gerät (Android 4.4, Oukitel Original-One) Ich habe die folgende Ausgabe bekam während klingelt:

RINGING 
IDLE //in real I'm still ringing here. 
IDLE //real stop ringing 

Gibt es irgendwelche schlauen Funktionen oder es ist nur ein Fehler in der Firmware? Leider führte meine Suche zu nichts.

UPD Es funktioniert gut für einige Geräte, für andere Geräte funktioniert es wie oben beschrieben.

Einige weitere Details. Ich habe diesen Listener in onStartCommand meines Dienstes eingestellt. Dienst wurde von einem Broadcast-Empfänger gestartet, wenn TelephonyManager.EXTRA_STATE_RINGING anstarrte.

UPD2 Nun, ich habe eine Lösung gefunden. Der Broadcast-Empfänger funktioniert ordnungsgemäß, daher habe ich gerade auf Receiver-Benachrichtigungen umgeschaltet. Aber es ist wirklich interessant, was mit PhoneStateListener los ist. Wenn jemand Ideen hat, lass es mich wissen.

Antwort

0

bitte diesen Code verwenden, dass Ihnen und überprüfen Sie bitte auf reales Gerät nicht in emmulator

http://www.compiletimeerror.com/2013/08/android-call-state-listener-example.html#.V7CLBvl97IU

+0

nicht Link nur Antworten posten Sie, da sie, wie sie mit der Zeit sterben. Besprechen Sie stattdessen, was der OP möglicherweise falsch macht. – Shaishav

+0

Ok, Code aus dem Artikel funktioniert gut, aber ... Ich sehe keinen Unterschied mit meinem Code. – Tamplier

0

Ich war in der Lage zu helfen, diese auf 4.4 zu beheben, indem Sie den Dienst eine startForeground Mitteilung machen zu müssen beim Aufruf zu Halte den Dienst am Leben. Ihr Problem könnte anderswo sein, aber es könnte einen Versuch wert sein.

In meinem Dienst onCreate:

Intent notificationIntent = new Intent(this, MainActivity.class); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, 
      notificationIntent, 0); 

    Notification notification = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.ic_icon1) 
      .setContentTitle("title") 
      .setContentText("description") 
      .setContentIntent(pendingIntent).build(); 

    startForeground(1337, notification); 
Verwandte Themen