2015-01-14 3 views

ответ

2

Отказ от ответственности:Решение использует не опубликованные API. Это не является наилучшей практикой и может привести к непреднамеренным результатам. API не может быть реализован или может измениться. Используйте на свой риск.

Существует способ сделать это с отражением и скрытым вызовом API Android. TelephonyManager имеет открытый (но скрытый) метод getImei(). Не идеально, но для моей конкретной работы.

private String getIMEI() throws NoIMEIException { 
    TelephonyManager mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    try { 
     Method method = mTelephonyMgr.getClass().getMethod("getImei"); 
     String imei = (String) method.invoke(mTelephonyMgr); 
     if (imei == null) { 
      throw new NoIMEIException(); 
     } else { 
      return imei; 
     } 
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { 
     throw new NoIMEIException(); 
    } 
} 
+0

Фактически, это единственный ответ, который помог мне, используя android 5.0 и 6.0. Я получаю 14 цифр IMEI, используяTelephonyManager.getDeviceId(). – AndroidCoolestRulest

 Смежные вопросы

  • Нет связанных вопросов^_^