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

getDeviceId()在Verizon电话上返回14位MEID(因为它是CDMA语音设备)。是否可以通过编程方式获取15位IMEI(如“设置”菜单中所列)?

最佳答案

免责声明:解决方案使用未发布的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();
    }
}

本文翻译自 https://stackoverflow.com/questions/27944116/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 android imei cdma verizon-wireless


相关文章:

c - 是否可以验证IMEI号码?

android - 为什么getNetworkOperator对CDMA不可靠?

android - Android上的CDMA PDU解析

ios - 我的iOS游戏在GSM上运行良好,但不会在CDMA上运行

android - 解析推送通知不从Android发送到频道

android - 如何从片段B访问片段A的按钮

android - ListView自定义背景颜色

android - NFC读取器可以从电话中读取IMEI吗?

android - 如何测试声级均方根算法

android - 唯一标识每个设备,访问sencha Web应用程序