Android 双卡双待支持检验SIM信息获取

Android 双卡双待支持检验及SIM信息获取

本文将从应用开发者的角度分析手机是否支持双卡双待,获取如果说希望自己做出支持双卡双待的系统,本文估计就不适合你了,能力不足,还望见谅啊
好了,为了迎合大众的需要,我们还是从普通开发者角度(不需要系统源码支持)开始吧!
原装的android系统不存在双卡这个东西,所以绝大多数的手机几乎都不存在支持双卡双待。一般情况来讲,我们不需要考虑这些问题,如果,确实有那个需要考虑到双卡双待的支持
首先,我们要知道双卡双待是MTK对于android的改动
其次我们要知道TelePhonyManager是对于电话服务的实现
[java]  view plain copy
  1. private TelephonyManager Mtm;  
  2. Mtm=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);  

[java]  view plain copy
  1. try {  
  2. //调用系统函数getSimStateGemini(原装android系统不支持双卡双待,所以不会有这个函数),MTK添加此函数(双卡双待中国特色)  
  3. method_ckeckDoublePhone=TelephonyManager.class.getMethod("getSimStateGemini",new Class[]{int.class});  
  4. //如果成功调用到此函数,则实现双卡双待  
  5. //获得SIM卡1  
  6. phone_result_1=method_ckeckDoublePhone.invoke(Mtm, new Object[]{Integer.valueOf(0)});  
  7. //获得SIM卡2  
  8. phone_result_2=method_ckeckDoublePhone.invoke(Mtm, new Object[]{Integer.valueOf(1)});  
  9. catch (NoSuchMethodException e) {  
  10. // TODO Auto-generated catch block  
  11. e.printStackTrace();  
  12. isDoublePhone=false;  
  13. }catch(SecurityException e){  
  14. e.printStackTrace();  
  15. isDoublePhone=false;  
  16. }catch(IllegalArgumentException e){  
  17. e.printStackTrace();  
  18. isDoublePhone=false;  
  19. }catch(InvocationTargetException e){  
  20. e.printStackTrace();  
  21. isDoublePhone=false;  
  22. }catch(Exception e){  
  23. e.printStackTrace();  
  24. isDoublePhone=false;  
  25. }  
顺便一提的是上面的函数getSimStateGemini返回是SIM状态,这里不用管,你只需要知道,如果不进入Exception就是双卡双待
当然,方法不止这一种。至于SIM信息获取,就请大家百度了

如果是做framework层开发发送相对就很简单了
[java]  view plain copy
  1. try{  
  2. if(ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE)).isSimInsert(0)){  
  3. //SIMCard1   inserted  
  4. }  
  5. if(ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE)).isSimInsert(1)){  
  6. //SIMCard2 inserted  
  7. }}catch (RemoteException ex) {  
  8. catch (NullPointerException ex) {  
  9. }  

或者
[java]  view plain copy
  1. if ("READY".equals(SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE))) {  
  2. //SIMCard1 Ready  
  3. }  
  4. if ("READY".equals(SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE_2))) {  
  5. //SIMCard2 Ready  
  6. }  

当然这里也给大家透露以下SIM state
[java]  view plain copy
  1. "ABSENT"     //缺失  
  2. "PIN_REQUIRED"   //  
  3. "PUK_REQUIRED"  
  4. "NETWORK_LOCKED"  
  5. "READY"     //ready  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值