私は自分のアプリケーション内で携帯電話の状態を受信するために、次のコードを持っている:アンドロイドPhoneStateListener間違った状態
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;
}
}
};
すべてが2つのエミュレータ(Androidの6.0とAndroid 4.4)で正常に動作します。リンギングしながら、しかし、私の本当のデバイス(アンドロイド4.4、Oukitelオリジナルワン)の上に、私は次の出力を持っている:
RINGING
IDLE //in real I'm still ringing here.
IDLE //real stop ringing
は、任意の狡猾な機能はありますかそれはファームウェアでただのバグですか?残念ながら、私の検索は何にもつながりませんでした。
UPD 一部のデバイスでは正常に動作し、他のデバイスでは上記のように動作します。
さらに詳しい情報。私はこのリスナーを私のサービスのonStartCommandに設定しました。 TelephonyManager.EXTRA_STATE_RINGINGが見つかった場合、サービスはブロードキャスト受信者から開始されました。
UPD2 まあ、私は解決策を見つけました。放送受信機が正常に動作しているので、私はReceiver通知に切り替えました。しかし、PhoneStateListenerの問題は本当に面白いです。誰かがアイデアを持っているなら、私に知らせてください。
はリンク彼らとしてだけで答えを投稿しないでください。代わりに、OPが間違っているかもしれないことについて話し合う。 – Shaishav
いいえ、記事のコードは正常に動作しますが...私のコードとの違いはありません。 – Tamplier