Android 解决双卡双待的问题 |
您所在的位置:网站首页 › 什么是imsi号码几位数 › Android 解决双卡双待的问题 |
由于国内的运营商问题,双卡手机获取IMSI号问题要根据厂商API 来实现。 下面我们就来做一套完整的分析运营商获取IMSI号逻辑。 1,首先我们要判断手机的平台。 1.1,判断手机是否MTK平台 [java] view plaincopyprint?public static MtkDoubleInfo initMtkDoubleSim(Context mContext) { MtkDoubleInfo mtkDoubleInfo = new MtkDoubleInfo(); try { TelephonyManager tm = (TelephonyManager) mContext .getSystemService(Context.TELEPHONY_SERVICE); Class c = Class.forName("com.android.internal.telephony.Phone"); Field fields1 = c.getField("GEMINI_SIM_1"); fields1.setAccessible(true); mtkDoubleInfo.setSimId_1((Integer) fields1.get(null)); Field fields2 = c.getField("GEMINI_SIM_2"); fields2.setAccessible(true); mtkDoubleInfo.setSimId_2((Integer) fields2.get(null)); Method m = TelephonyManager.class.getDeclaredMethod( "getSubscriberIdGemini", int.class); mtkDoubleInfo.setImsi_1((String) m.invoke(tm, mtkDoubleInfo.getSimId_1())); mtkDoubleInfo.setImsi_2((String) m.invoke(tm, mtkDoubleInfo.getSimId_2())); Method m1 = TelephonyManager.class.getDeclaredMethod( "getDeviceIdGemini", int.class); mtkDoubleInfo.setImei_1((String) m1.invoke(tm, mtkDoubleInfo.getSimId_1())); mtkDoubleInfo.setImei_2((String) m1.invoke(tm, mtkDoubleInfo.getSimId_2())); Method mx = TelephonyManager.class.getDeclaredMethod( "getPhoneTypeGemini", int.class); mtkDoubleInfo.setPhoneType_1((Integer) mx.invoke(tm, mtkDoubleInfo.getSimId_1())); mtkDoubleInfo.setPhoneType_2((Integer) mx.invoke(tm, mtkDoubleInfo.getSimId_2())); if (TextUtils.isEmpty(mtkDoubleInfo.getImsi_1()) && (!TextUtils.isEmpty(mtkDoubleInfo.getImsi_2()))) { mtkDoubleInfo.setDefaultImsi(mtkDoubleInfo.getImsi_2()); } if (TextUtils.isEmpty(mtkDoubleInfo.getImsi_2()) && (!TextUtils.isEmpty(mtkDoubleInfo.getImsi_1()))) { mtkDoubleInfo.setDefaultImsi(mtkDoubleInfo.getImsi_1()); } } catch (Exception e) { mtkDoubleInfo.setMtkDoubleSim(false); return mtkDoubleInfo; } mtkDoubleInfo.setMtkDoubleSim(true); return mtkDoubleInfo; } 直接判断异常。出现异常证明就不是MTK平台了。1.2判断手机是否高通平台 [java] view plaincopyprint?public static GaotongDoubleInfo initQualcommDoubleSim(Context mContext) { GaotongDoubleInfo gaotongDoubleInfo = new GaotongDoubleInfo(); gaotongDoubleInfo.setSimId_1(0); gaotongDoubleInfo.setSimId_2(1); try { Class cx = Class .forName("android.telephony.MSimTelephonyManager"); Object obj = mContext.getSystemService("phone_msim"); Method md = cx.getMethod("getDeviceId", int.class); Method ms = cx.getMethod("getSubscriberId", int.class); gaotongDoubleInfo.setImei_1((String) md.invoke(obj, gaotongDoubleInfo.getSimId_1())); gaotongDoubleInfo.setImei_2((String) md.invoke(obj, gaotongDoubleInfo.getSimId_2())); gaotongDoubleInfo.setImsi_1((String) ms.invoke(obj, gaotongDoubleInfo.getSimId_1())); gaotongDoubleInfo.setImsi_2((String) ms.invoke(obj, gaotongDoubleInfo.getSimId_2())); } catch (Exception e) { e.printStackTrace(); gaotongDoubleInfo.setGaotongDoubleSim(false); return gaotongDoubleInfo; } return gaotongDoubleInfo; } 一样出现异常就不是高通双卡平台了然后我们在整理下逻辑 [java] view plaincopyprint?/** * @param c * @return 返回平台数据 */ public Object isDoubleSim(Context c) { GaotongDoubleInfo gaotongDoubleInfo = MultiSimUtility .initQualcommDoubleSim(c); MtkDoubleInfo mtkDoubleInfo = MultiSimUtility.initMtkDoubleSim(c); boolean isGaoTongCpu = gaotongDoubleInfo.isGaotongDoubleSim(); boolean isMtkCpu = mtkDoubleInfo.isMtkDoubleSim(); if (isGaoTongCpu) { // 高通芯片双卡 return gaotongDoubleInfo; } else if (isMtkCpu) { // MTK芯片双卡 return mtkDoubleInfo; } else { //普通单卡手机 return null; } } 这个时候我们基本上获取到了手机的平台和每张卡的信息。单卡手机获取信息就不贴代码了。 0 0 Android 解决双卡双待的问题 解决android 的问题 Android的问题与解决 Android ANR问题的解决 Android解决:INSTALL_FAILED_MEDIA_UNAVAILABLE的问题 解决android gradle的问题 Android 解决android imeoptions 失效的问题 Android 解决双卡双待的问题 mtk,展讯,高通 解决android应用程序不能调试的问题 解决android自定义标题栏充满的问题 解决android自定义标题栏充满的问题 解决android自定义标题栏充满的问题 解决android自定义标题栏充满的问题 解决android自定义标题栏充满的问题 解决Android模拟器显示太大的问题 解决 android GIF播放的问题 解决android自定义标题栏充满的问题 解决 Android 模拟器无法上网的问题 NGUI中TweenScale回调函数设为null时导致的BUG C++小数位数格式输出 Lintcode - Median 黑马程序员——网络编程 oracle编程入门笔记2015-02-05--递归查询 Android 解决双卡双待的问题 Linux网络编程笔记(修订版) Seamless migration from Nova-network to Neutron in eBay production 心净,心静,心境 关于eclipse开启时会瞬间关闭解决办法 自己手打备忘:WINDOWS 2008 R2 做软路由共享上ADSL的方法 datatable转LIST 优化网站加载速度的14个技巧 黑马程序员——C语言学习——概述 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |