2012-11-05 138 views
4

我有一个双卡android手机。我正在使用自定义广播接收器,它可以毫无问题地读取传入的消息。我想知道是否有办法找出哪个sim收到了这条消息。广播接收器双卡

回答

1

您可以使用TelephonyManager获取活动SIM卡的信息。例如,它是序列号。

TelephonyManager telephoneMgr = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE); 

String simSerial = telephoneMgr.getSimSerialNumber(); 

你也可以得到line1Number,如果你的网络运营商已经摆在那里你的号码,你可以把它比作你就得到了数>在短信领域。

String phoneNumber = telephoneMgr.getLine1Number(); 

希望它可以帮助

+0

首先希望!会试一试。谢谢@marcel –

0

我有一些很艰难的时期这个问题,最后我找到了一个解决方案,虽然我测试了它上面仅API级别22

你必须看看在收到的意图中的额外信息。在我的情况下,有意义的额外Bundle中有两个键是有用的:“slot”和“subscription”。

这里是例子:

public class IncomingSms extends BroadcastReceiver { 

      public void onReceive(Context context, Intent intent) { 

       // Retrieves a map of extended data from the intent. 
       Bundle bundle = intent.getExtras(); 

       int slot = bundle.getInt("slot", -1); 
       int sub = bundle.getInt("subscription", -1); 

       /* 
        Handle the sim info 
       */ 
      } 
} 

我没有找到关于此文档所以这可能是设备/制造商特有的,我可以想像,密钥是diferent或类似的东西。 您可以通过倾销包的密钥集验证这一点:

Set<string> keyset = bundle.keySet();