Android PhoneStateListener错误状态

时间:2016-08-14 15:11:19

标签: android phone-state-listener

我有以下代码在我的应用程序中接收电话状态:

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;
        }
    }
};

所有在两个模拟器(Android 6.0和Android 4.4)上运行正常。但是在我的真实设备上(android 4.4,Oukitel Original One)我在响铃时得到了以下输出:

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

是否有任何狡猾的功能或它只是固件中的错误?不幸的是,我的搜索没有任何结果。

UPD 它适用于某些设备,对于其他设备,它的工作原理如上所述。

更多细节。我在我的服务的onStartCommand中设置了这个监听器。如果收到TelephonyManager.EXTRA_STATE_RINGING,则服务从广播接收器开始。

UPD2 好吧,我找到了解决方案。广播接收器工作正常,所以我刚刚切换到接收器通知。但它真的很有趣,PhoneStateListener出了什么问题。如果有人有任何想法,请告诉我。

2 个答案:

答案 0 :(得分:0)

请使用此代码一定能帮到您 请检查不是在emmulator中的真实设备

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

答案 1 :(得分:0)

我能够通过让服务在调用以保持服务活动时发出startForeground通知来解决这个问题。您的问题可能在其他地方,但可能值得尝试一下。

在我的服务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);