2015-01-14 5 views

답변

2

면책 조항 :솔루션은 게시되지 않은 API를 사용합니다. 이는 모범 사례를 나타내지 않으므로 의도하지 않은 결과가 발생할 수 있습니다. API가 구현되지 않았거나 변경 될 수 있습니다. 자신의 책임하에 사용하십시오.

리플렉션 및 숨겨진 Android API 호출로이를 수행 할 수있는 방법이 있습니다. TelephonyManager에는 public (그러나 숨겨진) 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

실제로 이것은 유일한 도움이되는 안드로이드 5.0 및 6.0을 사용하는 14 자리 IMEI usingTelephonyManager.getDeviceId()입니다. – AndroidCoolestRulest