你如何在Verizon(CDMA语音/ LTE数据)设备上获得IMEI?

时间:2015-01-14 13:28:39

标签: android imei cdma verizon-wireless

getDeviceId()返回Verizon手机上的14位MEID(因为它是CDMA语音设备)。是否有一种编程方式来获取15位IMEI(因为它在“设置”菜单中列出)而不是?

1 个答案:

答案 0 :(得分:2)

免责声明: 解决方案使用未发布的API。这并不代表最佳做法,可能会导致意外结果。 API可能无法实施或可能会更改。使用风险由您自己承担。

有一种方法可以通过反射和隐藏的Android API调用来完成此操作。 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();
    }
}