4

我有一个双 SIM(插槽 0 和插槽 1)电话。我的服务中有phonestatelistener。只有当 sim slot 0 中的 SIM 卡收到呼叫时,此侦听器才会收到回调。当 SIM 卡插槽 1 中的 SIM 卡呼叫时,此侦听器未收到回叫。

我已经更换了 SIM 卡并确认无论 SIM 卡如何,phonestatelistener 都只会在 SIM 卡插槽 0 中获取 SIM 卡的回调。

我无法理解这个问题。

请让我知道可能是什么问题

Phone model samsung galaxy s duos 2 (GT-S7562) OS jelly bean 4.2.2

家庭服务.java

public class Homeservice extends Service{


   TelephonyManager telephonyManager;  
   PhoneStateListener listener;



    @Override
    public void onCreate() {


         // Get the telephony manager    
         telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

         // Create a new PhoneStateListener    
         listener = new PhoneStateListener() {      

         @Override      
         public void onCallStateChanged(int state, String incomingNumber) { 


             switch (state) {
                    case TelephonyManager.CALL_STATE_IDLE:
                        //finish something
                            break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        //do somethings
                        break; 
                    case TelephonyManager.CALL_STATE_RINGING: 
                        break;
                        } 
                    }
                };


                // Register the listener wit the telephony manager              
                telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);




    }




    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub

        return START_STICKY;



    }


    @Override
    public void onDestroy() {

        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }




}

清单.xml

<service
        android:name="com.kabil.homeservice"
        >
   </service>
4

2 回答 2

1

PhoneStateListener有另一个构造函数PhoneStateListener(Integer subId),您可以在其中将您的 sim 订阅 id 传递给构造函数,它将按原样完成剩余的任务。

于 2018-06-26T10:15:09.553 回答
0

TelephoneManager 的一个实例与特定的 SIM (subscriptionId) 相关联。使用TelephonyManager.createForSubscription获取所需 SIM 插槽的实例。

于 2017-05-04T01:41:43.043 回答