zoukankan      html  css  js  c++  java
  • 安卓获取双IMEI

      1 import java.util.ArrayList;
      2 import java.util.List;
      3 
      4 import android.content.Context;
      5 import android.telephony.TelephonyManager;
      6 import android.widget.Toast;
      7 
      8 public class getImei {
      9     Context context = null;
     10 
     11     public getImei(Context _context) {
     12         context = _context;
     13     }
     14 
     15     public String getimei() {
     16 
     17         try {
     18 
     19             TelephonyManager tm = (TelephonyManager) context
     20                     .getSystemService(Context.TELEPHONY_SERVICE);
     21             String imei = tm.getDeviceId();
     22             List<String> IMEIS = new ArrayList<String>();
     23             if (checkimei(imei.trim())) {
     24                 IMEIS.add(imei.trim());
     25             }
     26             
     27             
     28             try{
     29                 TelephonyManager telephonyManager1 = (TelephonyManager)context.getSystemService("phone1");
     30                 String imeiphone1=   telephonyManager1.getDeviceId();
     31                 if (imeiphone1 != null && checkimei(imeiphone1)) { 
     32                     if (!IMEIS.contains(imeiphone1)) {
     33                         IMEIS.add(imeiphone1); 
     34                         }
     35                 }
     36             }  catch (Exception e) {
     37                          
     38             }
     39             try{
     40                 TelephonyManager telephonyManager2 = (TelephonyManager)context.getSystemService("phone2");
     41                 String imeiphone2=   telephonyManager2.getDeviceId();
     42                 if (imeiphone2 != null && checkimei(imeiphone2)) { 
     43                     if (!IMEIS.contains(imeiphone2)) {
     44                         IMEIS.add(imeiphone2); 
     45                     }
     46                 }
     47                 }  catch (Exception e) {
     48                      
     49             }
     50          
     51             List<String> imeis = IMEI_initQualcommDoubleSim();
     52             if (imeis != null && imeis.size() > 0) {
     53                 for (String item : imeis) {
     54                     if (!IMEIS.contains(item)) {
     55                         IMEIS.add(item);
     56                     }
     57                 }
     58             }
     59 
     60             imeis = IMEI_initMtkSecondDoubleSim();
     61             if (imeis != null && imeis.size() > 0) {
     62                 for (String item : imeis) {
     63                     if (!IMEIS.contains(item)) {
     64                         IMEIS.add(item);
     65                     }
     66                 }
     67             }
     68             imeis = IMEI_initMtkDoubleSim();
     69             if (imeis != null && imeis.size() > 0) {
     70                 for (String item : imeis) {
     71                     if (!IMEIS.contains(item)) {
     72                         IMEIS.add(item);
     73                     }
     74                 }
     75             }
     76             imeis = IMEI_initSpreadDoubleSim();
     77             if (imeis != null && imeis.size() > 0) {
     78                 for (String item : imeis) {
     79                     if (!IMEIS.contains(item)) {
     80                         IMEIS.add(item);
     81                     }
     82                 }
     83             }
     84 
     85             StringBuffer IMEI_SB = new StringBuffer();
     86 
     87             Integer TIMES_TEMP = 1;
     88             for (String item : IMEIS) {
     89                 if (TIMES_TEMP > 1) {
     90                     IMEI_SB.append('
    ');
     91                 }
     92                 IMEI_SB.append(item);
     93                 // params.put("IMEI" + TIMES_TEMP, item);
     94                 TIMES_TEMP++;
     95             }
     96 
     97             String imeis_tmp = IMEI_SB.toString().trim();
     98             
     99             
    100             if ("".equals(imeis_tmp)) {
    101                 imeis_tmp = "no_imei_1";
    102             }
    103             return imeis_tmp;
    104             //
    105             // TextView_imei.setText(IMEI_SB.toString());
    106             //
    107             // WriteFile("imei", IMEI_SB.toString());
    108 
    109         } catch (Exception e) {
    110             Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
    111             return "no_imei_2";
    112         }
    113         
    114     }
    115 
    116     private Boolean checkimeisame(String imei) {
    117         char firstchar = '0';
    118         if (imei.length() > 0) {
    119             firstchar = imei.charAt(0);
    120         }
    121         Boolean issame = true;
    122         for (int i = 0; i < imei.length(); i++) {
    123             char ch = imei.charAt(i);
    124             if (firstchar != ch) {
    125                 issame = false;
    126                 break;
    127             }
    128         }
    129         return issame;
    130         // if (issame) {
    131         // // 全是相同字符;
    132         // } else {
    133         // // 包含不同字符
    134         // }
    135 
    136     }
    137 
    138     private Boolean checkimei(String IMEI) {
    139         Integer LEN = IMEI.length();
    140         if (LEN > 10 && LEN < 20 && !checkimeisame(IMEI.trim())) {
    141             return true;
    142         }
    143         return false;
    144     }
    145 
    146     private List<String> IMEI_initMtkDoubleSim() {
    147         try {
    148             TelephonyManager tm = (TelephonyManager) context
    149                     .getSystemService(Context.TELEPHONY_SERVICE);
    150             Class<?> c = Class.forName("com.android.internal.telephony.Phone");
    151             Integer simId_1, simId_2;
    152             try {
    153                 java.lang.reflect.Field fields1 = c.getField("GEMINI_SIM_1");
    154                 fields1.setAccessible(true);
    155                 simId_1 = (Integer) fields1.get(null);
    156                 java.lang.reflect.Field fields2 = c.getField("GEMINI_SIM_2");
    157                 fields2.setAccessible(true);
    158                 simId_2 = (Integer) fields2.get(null);
    159             } catch (Exception ex) {
    160                 simId_1 = 0;
    161                 simId_2 = 1;
    162             }
    163 
    164             // java.lang.reflect.Method m = TelephonyManager.class
    165             // .getDeclaredMethod("getSubscriberIdGemini", int.class);
    166             // String imsi_1 = (String) m.invoke(tm, simId_1);
    167             // String imsi_2 = (String) m.invoke(tm, simId_2);
    168 
    169             java.lang.reflect.Method m1 = TelephonyManager.class
    170                     .getDeclaredMethod("getDeviceIdGemini", int.class);
    171             String imei_1 = ((String) m1.invoke(tm, simId_1)).trim();
    172             String imei_2 = ((String) m1.invoke(tm, simId_2)).trim();
    173 
    174             // java.lang.reflect.Method mx = TelephonyManager.class
    175             // .getDeclaredMethod("getPhoneTypeGemini", int.class);
    176             // Integer phoneType_1 = (Integer) mx.invoke(tm, simId_1);
    177             // Integer phoneType_2 = (Integer) mx.invoke(tm, simId_2);
    178             // String defaultImsi = "";
    179             // if (TextUtils.isEmpty(imsi_1) && (!TextUtils.isEmpty(imsi_2))) {
    180             // defaultImsi = imsi_2;
    181             // }
    182             // if (TextUtils.isEmpty(imsi_2) && (!TextUtils.isEmpty(imsi_1))) {
    183             // defaultImsi = imsi_1;
    184             // }
    185 
    186             List<String> imeis = new ArrayList<String>();
    187             if (checkimei(imei_1)) {
    188                 imeis.add(imei_1);
    189             }
    190             if (checkimei(imei_2)) {
    191                 imeis.add(imei_2);
    192             }
    193             return imeis;
    194         } catch (Exception e) {
    195             // ��MTK
    196             return null;
    197         }
    198 
    199     }
    200 
    201     private List<String> IMEI_initMtkSecondDoubleSim() {
    202         try {
    203             TelephonyManager tm = (TelephonyManager) context
    204                     .getSystemService(Context.TELEPHONY_SERVICE);
    205             Class<?> c = Class.forName("com.android.internal.telephony.Phone");
    206 
    207             Integer simId_1, simId_2;
    208             try {
    209                 java.lang.reflect.Field fields1 = c.getField("GEMINI_SIM_1");
    210                 fields1.setAccessible(true);
    211                 simId_1 = (Integer) fields1.get(null);
    212                 java.lang.reflect.Field fields2 = c.getField("GEMINI_SIM_2");
    213                 fields2.setAccessible(true);
    214                 simId_2 = (Integer) fields2.get(null);
    215             } catch (Exception ex) {
    216                 simId_1 = 0;
    217                 simId_2 = 1;
    218             }
    219 
    220             java.lang.reflect.Method mx = TelephonyManager.class.getMethod(
    221                     "getDefault", int.class);
    222             TelephonyManager tm1 = (TelephonyManager) mx.invoke(tm, simId_1);
    223             TelephonyManager tm2 = (TelephonyManager) mx.invoke(tm, simId_2);
    224 
    225             // String imsi_1 = tm1.getSubscriberId();
    226             // String imsi_2 = tm2.getSubscriberId();
    227 
    228             String imei_1 = (tm1.getDeviceId()).trim();
    229             String imei_2 = (tm2.getDeviceId()).trim();
    230             //
    231             // Integer phoneType_1 = tm1.getPhoneType();
    232             // Integer phoneType_2 = tm2.getPhoneType();
    233             // String defaultImsi = "";
    234             // if (TextUtils.isEmpty(imsi_1) && (!TextUtils.isEmpty(imsi_2))) {
    235             // defaultImsi = imsi_2;
    236             // }
    237             // if (TextUtils.isEmpty(imsi_2) && (!TextUtils.isEmpty(imsi_1))) {
    238             // defaultImsi = imsi_1;
    239             // }
    240 
    241             List<String> imeis = new ArrayList<String>();
    242             if (checkimei(imei_1)) {
    243                 imeis.add(imei_1);
    244             }
    245             if (checkimei(imei_2)) {
    246                 imeis.add(imei_2);
    247             }
    248             return imeis;
    249 
    250         } catch (Exception e) {
    251             return null;
    252         }
    253     }
    254 
    255     private List<String> IMEI_initSpreadDoubleSim() {
    256         try {
    257             Class<?> c = Class
    258                     .forName("com.android.internal.telephony.PhoneFactory");
    259             java.lang.reflect.Method m = c.getMethod("getServiceName",
    260                     String.class, int.class);
    261             String spreadTmService = (String) m.invoke(c,
    262                     Context.TELEPHONY_SERVICE, 1);
    263 
    264             TelephonyManager tm = (TelephonyManager) context
    265                     .getSystemService(Context.TELEPHONY_SERVICE);
    266             // String imsi_1 = tm.getSubscriberId();
    267             String imei_1 = (tm.getDeviceId()).trim();
    268             // Integer phoneType_1 = tm.getPhoneType();
    269             TelephonyManager tm1 = (TelephonyManager) context
    270                     .getSystemService(spreadTmService);
    271             // String imsi_2 = tm1.getSubscriberId();
    272             String imei_2 = (tm1.getDeviceId()).trim();
    273             // Integer phoneType_2 = tm1.getPhoneType();
    274             // String defaultImsi = "";
    275             // if (TextUtils.isEmpty(imsi_1) && (!TextUtils.isEmpty(imsi_2))) {
    276             // defaultImsi = imsi_2;
    277             // }
    278             // if (TextUtils.isEmpty(imsi_2) && (!TextUtils.isEmpty(imsi_1))) {
    279             // defaultImsi = imsi_1;
    280             // }
    281 
    282             List<String> imeis = new ArrayList<String>();
    283             if (checkimei(imei_1)) {
    284                 imeis.add(imei_1);
    285             }
    286             if (checkimei(imei_2)) {
    287                 imeis.add(imei_2);
    288             }
    289             return imeis;
    290 
    291         } catch (Exception e) {
    292             return null;
    293         }
    294     }
    295 
    296     public List<String> IMEI_initQualcommDoubleSim() {
    297         try {
    298             TelephonyManager tm = (TelephonyManager) context
    299                     .getSystemService(Context.TELEPHONY_SERVICE);
    300             Class<?> cx = Class
    301                     .forName("android.telephony.MSimTelephonyManager");
    302             Object obj = context.getSystemService("phone_msim");
    303             Integer simId_1 = 0;
    304             Integer simId_2 = 1;
    305             //
    306             // java.lang.reflect.Method mx = cx.getMethod("getDataState");
    307             // // int stateimei_1 = (Integer) mx.invoke(cx.newInstance());
    308             // int stateimei_2 = tm.getDataState();
    309             // java.lang.reflect.Method mde = cx.getMethod("getDefault");
    310             java.lang.reflect.Method md = cx
    311                     .getMethod("getDeviceId", int.class);
    312             // java.lang.reflect.Method ms = cx.getMethod("getSubscriberId",
    313             // int.class);
    314             // java.lang.reflect.Method mp = cx.getMethod("getPhoneType");
    315 
    316             // Object obj = mde.invoke(cx);
    317 
    318             String imei_1 = ((String) md.invoke(obj, simId_1)).trim();
    319             String imei_2 = ((String) md.invoke(obj, simId_2)).trim();
    320 
    321             // String imsi_1 = (String) ms.invoke(obj, simId_1);
    322             // String imsi_2 = (String) ms.invoke(obj, simId_2);
    323 
    324             // int statephoneType_1 = tm.getDataState();
    325             // int statephoneType_2 = (Integer) mx.invoke(obj);
    326 
    327             List<String> imeis = new ArrayList<String>();
    328             if (checkimei(imei_1)) {
    329                 imeis.add(imei_1);
    330             }
    331             if (checkimei(imei_2)) {
    332                 imeis.add(imei_2);
    333             }
    334             return imeis;
    335 
    336             // Log.e("tag", statephoneType_1 + "---" + statephoneType_2);
    337 
    338             // Class<?> msc = Class.forName("android.telephony.MSimSmsManager");
    339             // for (Method m : msc.getMethods()) {
    340             // if (m.getName().equals("sendTextMessage")) {
    341             // m.getParameterTypes();
    342             // }
    343             // Log.e("tag", m.getName());
    344             // }
    345 
    346         } catch (Exception e) {
    347             return null;
    348         }
    349     }
    350 
    351 }
  • 相关阅读:
    今天开始用 VSU 2010
    Visual Studio 2010 模型设计工具 基本应用
    Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
    Enterprise Library 4.1 Security Block 快速使用图文笔记
    解决“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。”(图)
    一个Oracle存储过程示例
    Enterprise Library 4.1 Application Settings 快速使用图文笔记
    Oracle 10g for Windows 简体中文版的安装过程
    Oracle 11g for Windows 简体中文版的安装过程
    Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
  • 原文地址:https://www.cnblogs.com/cejay/p/3566396.html
Copyright © 2011-2022 走看看