来自于:http://www.sum16.com/desinger/android-get-double-imei-include-made-in-china.html
import java.util.ArrayList; import java.util.List; import android.content.Context; import android.telephony.TelephonyManager; import android.widget.Toast; public class getImei { Context context = null; public getImei(Context _context) { context = _context; } public String getimei() { try { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); String imei = tm.getDeviceId(); List<String> IMEIS = new ArrayList<String>(); if (checkimei(imei.trim())) { IMEIS.add(imei.trim()); } try{ TelephonyManager telephonyManager1 = (TelephonyManager)context.getSystemService("phone1"); String imeiphone1= telephonyManager1.getDeviceId(); if (imeiphone1 != null && checkimei(imeiphone1)) { if (!IMEIS.contains(imeiphone1)) { IMEIS.add(imeiphone1); } } } catch (Exception e) { } try{ TelephonyManager telephonyManager2 = (TelephonyManager)context.getSystemService("phone2"); String imeiphone2= telephonyManager2.getDeviceId(); if (imeiphone2 != null && checkimei(imeiphone2)) { if (!IMEIS.contains(imeiphone2)) { IMEIS.add(imeiphone2); } } } catch (Exception e) { } List<String> imeis = IMEI_initQualcommDoubleSim(); if (imeis != null && imeis.size() > 0) { for (String item : imeis) { if (!IMEIS.contains(item)) { IMEIS.add(item); } } } imeis = IMEI_initMtkSecondDoubleSim(); if (imeis != null && imeis.size() > 0) { for (String item : imeis) { if (!IMEIS.contains(item)) { IMEIS.add(item); } } } imeis = IMEI_initMtkDoubleSim(); if (imeis != null && imeis.size() > 0) { for (String item : imeis) { if (!IMEIS.contains(item)) { IMEIS.add(item); } } } imeis = IMEI_initSpreadDoubleSim(); if (imeis != null && imeis.size() > 0) { for (String item : imeis) { if (!IMEIS.contains(item)) { IMEIS.add(item); } } } StringBuffer IMEI_SB = new StringBuffer(); Integer TIMES_TEMP = 1; for (String item : IMEIS) { if (TIMES_TEMP > 1) { IMEI_SB.append('\n'); } IMEI_SB.append(item); // params.put("IMEI" + TIMES_TEMP, item); TIMES_TEMP++; } String imeis_tmp = IMEI_SB.toString().trim(); if ("".equals(imeis_tmp)) { imeis_tmp = "no_imei_1"; } return imeis_tmp; // // TextView_imei.setText(IMEI_SB.toString()); // // WriteFile("imei", IMEI_SB.toString()); } catch (Exception e) { Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show(); return "no_imei_2"; } } private Boolean checkimeisame(String imei) { char firstchar = '0'; if (imei.length() > 0) { firstchar = imei.charAt(0); } Boolean issame = true; for (int i = 0; i < imei.length(); i++) { char ch = imei.charAt(i); if (firstchar != ch) { issame = false; break; } } return issame; // if (issame) { // // 全是相同字符; // } else { // // 包含不同字符 // } } private Boolean checkimei(String IMEI) { Integer LEN = IMEI.length(); if (LEN > 10 && LEN < 20 && !checkimeisame(IMEI.trim())) { return true; } return false; } private List<String> IMEI_initMtkDoubleSim() { try { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); Class<?> c = Class.forName("com.android.internal.telephony.Phone"); Integer simId_1, simId_2; try { java.lang.reflect.Field fields1 = c.getField("GEMINI_SIM_1"); fields1.setAccessible(true); simId_1 = (Integer) fields1.get(null); java.lang.reflect.Field fields2 = c.getField("GEMINI_SIM_2"); fields2.setAccessible(true); simId_2 = (Integer) fields2.get(null); } catch (Exception ex) { simId_1 = 0; simId_2 = 1; } // java.lang.reflect.Method m = TelephonyManager.class // .getDeclaredMethod("getSubscriberIdGemini", int.class); // String imsi_1 = (String) m.invoke(tm, simId_1); // String imsi_2 = (String) m.invoke(tm, simId_2); java.lang.reflect.Method m1 = TelephonyManager.class .getDeclaredMethod("getDeviceIdGemini", int.class); String imei_1 = ((String) m1.invoke(tm, simId_1)).trim(); String imei_2 = ((String) m1.invoke(tm, simId_2)).trim(); // java.lang.reflect.Method mx = TelephonyManager.class // .getDeclaredMethod("getPhoneTypeGemini", int.class); // Integer phoneType_1 = (Integer) mx.invoke(tm, simId_1); // Integer phoneType_2 = (Integer) mx.invoke(tm, simId_2); // String defaultImsi = ""; // if (TextUtils.isEmpty(imsi_1) && (!TextUtils.isEmpty(imsi_2))) { // defaultImsi = imsi_2; // } // if (TextUtils.isEmpty(imsi_2) && (!TextUtils.isEmpty(imsi_1))) { // defaultImsi = imsi_1; // } List<String> imeis = new ArrayList<String>(); if (checkimei(imei_1)) { imeis.add(imei_1); } if (checkimei(imei_2)) { imeis.add(imei_2); } return imeis; } catch (Exception e) { // ��MTK return null; } } private List<String> IMEI_initMtkSecondDoubleSim() { try { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); Class<?> c = Class.forName("com.android.internal.telephony.Phone"); Integer simId_1, simId_2; try { java.lang.reflect.Field fields1 = c.getField("GEMINI_SIM_1"); fields1.setAccessible(true); simId_1 = (Integer) fields1.get(null); java.lang.reflect.Field fields2 = c.getField("GEMINI_SIM_2"); fields2.setAccessible(true); simId_2 = (Integer) fields2.get(null); } catch (Exception ex) { simId_1 = 0; simId_2 = 1; } java.lang.reflect.Method mx = TelephonyManager.class.getMethod( "getDefault", int.class); TelephonyManager tm1 = (TelephonyManager) mx.invoke(tm, simId_1); TelephonyManager tm2 = (TelephonyManager) mx.invoke(tm, simId_2); // String imsi_1 = tm1.getSubscriberId(); // String imsi_2 = tm2.getSubscriberId(); String imei_1 = (tm1.getDeviceId()).trim(); String imei_2 = (tm2.getDeviceId()).trim(); // // Integer phoneType_1 = tm1.getPhoneType(); // Integer phoneType_2 = tm2.getPhoneType(); // String defaultImsi = ""; // if (TextUtils.isEmpty(imsi_1) && (!TextUtils.isEmpty(imsi_2))) { // defaultImsi = imsi_2; // } // if (TextUtils.isEmpty(imsi_2) && (!TextUtils.isEmpty(imsi_1))) { // defaultImsi = imsi_1; // } List<String> imeis = new ArrayList<String>(); if (checkimei(imei_1)) { imeis.add(imei_1); } if (checkimei(imei_2)) { imeis.add(imei_2); } return imeis; } catch (Exception e) { return null; } } private List<String> IMEI_initSpreadDoubleSim() { try { Class<?> c = Class .forName("com.android.internal.telephony.PhoneFactory"); java.lang.reflect.Method m = c.getMethod("getServiceName", String.class, int.class); String spreadTmService = (String) m.invoke(c, Context.TELEPHONY_SERVICE, 1); TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); // String imsi_1 = tm.getSubscriberId(); String imei_1 = (tm.getDeviceId()).trim(); // Integer phoneType_1 = tm.getPhoneType(); TelephonyManager tm1 = (TelephonyManager) context .getSystemService(spreadTmService); // String imsi_2 = tm1.getSubscriberId(); String imei_2 = (tm1.getDeviceId()).trim(); // Integer phoneType_2 = tm1.getPhoneType(); // String defaultImsi = ""; // if (TextUtils.isEmpty(imsi_1) && (!TextUtils.isEmpty(imsi_2))) { // defaultImsi = imsi_2; // } // if (TextUtils.isEmpty(imsi_2) && (!TextUtils.isEmpty(imsi_1))) { // defaultImsi = imsi_1; // } List<String> imeis = new ArrayList<String>(); if (checkimei(imei_1)) { imeis.add(imei_1); } if (checkimei(imei_2)) { imeis.add(imei_2); } return imeis; } catch (Exception e) { return null; } } public List<String> IMEI_initQualcommDoubleSim() { try { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); Class<?> cx = Class .forName("android.telephony.MSimTelephonyManager"); Object obj = context.getSystemService("phone_msim"); Integer simId_1 = 0; Integer simId_2 = 1; // // java.lang.reflect.Method mx = cx.getMethod("getDataState"); // // int stateimei_1 = (Integer) mx.invoke(cx.newInstance()); // int stateimei_2 = tm.getDataState(); // java.lang.reflect.Method mde = cx.getMethod("getDefault"); java.lang.reflect.Method md = cx .getMethod("getDeviceId", int.class); // java.lang.reflect.Method ms = cx.getMethod("getSubscriberId", // int.class); // java.lang.reflect.Method mp = cx.getMethod("getPhoneType"); // Object obj = mde.invoke(cx); String imei_1 = ((String) md.invoke(obj, simId_1)).trim(); String imei_2 = ((String) md.invoke(obj, simId_2)).trim(); // String imsi_1 = (String) ms.invoke(obj, simId_1); // String imsi_2 = (String) ms.invoke(obj, simId_2); // int statephoneType_1 = tm.getDataState(); // int statephoneType_2 = (Integer) mx.invoke(obj); List<String> imeis = new ArrayList<String>(); if (checkimei(imei_1)) { imeis.add(imei_1); } if (checkimei(imei_2)) { imeis.add(imei_2); } return imeis; // Log.e("tag", statephoneType_1 + "---" + statephoneType_2); // Class<?> msc = Class.forName("android.telephony.MSimSmsManager"); // for (Method m : msc.getMethods()) { // if (m.getName().equals("sendTextMessage")) { // m.getParameterTypes(); // } // Log.e("tag", m.getName()); // } } catch (Exception e) { return null; } } }
相关推荐
c#已知窗口句柄获取窗口标题的方法,让你通过已知的窗口句柄获取窗口标题
该代码是已知三点坐标计算出圆心坐标的VB算法代码小程序,并可求出各点到圆心的距离,
一个快速开发的安卓(Android)开发框架.本质思想是快速的开发出易维护,易懂的高效率运行的App框架. 目前市面上有不少的开发框架,这些开发框架大大加速了Android的开发速度,让人们大呼过瘾。其实,一款好的框架就该...
IMEI第15位效验位生成器。可以批量生成IMEI。 已知的问题是不支持0开头的IMEI生成。
已知经纬度计算距离的代码
China_Province_City 2019年最新 的 3218个行政区 获取解析的java项目代码 省市区联动
用过的最好的,最轻量级的颜色获取转换工具;可以将已知颜色代码转换为颜色以便查看,可以将确定的颜色通过取色获取代码.还提供各种色带供您选用,可以说是全面轻巧实用的取色工具.
已知IMEI號碼前14位,計算第15位的校驗碼
Android蓝牙通信实例,有客户端和服务端两个程序,以便理解起来更加简单明了。
Android手机触屏、重力感应控制WiFi智能小车机器人正式版,修正目前已知BUG。
基础的插值算法,适合在数据处理中用双线性插值求已知点的插值
官方最新版ecshop系统+五款最热简洁版模板+ECTouch手机触屏版+后台美化+已知BUG修复
已知T值和自由度求P值
二叉树已知后序和中序遍历求前序遍历,C++编写已通过编译
已知汉字,显示出拼音来,一个非常实用的VB文件,如您自己想更加完善,可以借助本代码作参考。
获取IOS字体集源代码 字体集在LOG中和listview中均有显示 标注了系统中集成的已知Family和Family下的全部字体
压缩包内有两个C语言程序代码,分别是加解密和已知明文攻击,还有三个文本文档,是代码实现过程中的输入与输出文档。实现2阶Hill密码在已知明文攻击场景中,基于向量线性无关的破译。基于C语言实现 密钥矩阵随机生成...
由于目前功能尚未完善,还存在一些已知或未知的bug,所以当前版本仅为 beta 测试版。 本客户端开发过程是完全开放的,如果你想要改进客户端,或者发现了问题,可以到 这里提交 Issues 。当然了,你也可以基于该代码...
已知一个int数组, 编程从数组中获取最大数,初学者,不知道是否正确。
这里给出一个已知两点坐标和半径,求元新坐标的程序源码,供大家参考,代码涉及大量数学推导,如有疑问,来信请寄taiyangshen80293@sohu.com.