【问题标题】:TelephonyManager returns null for IMEI number: what can cause this?TelephonyManager 为 IMEI 号码返回 null:这可能是什么原因?
【发布时间】:2016-05-11 11:49:32
【问题描述】:

我正在开发一个 Android 应用程序,并且在使用 TelophonyManager 时收到了 null 的 IMEI 号码。这发生在几款华为手机上。 (都是 Ascend Y530)。

这些手机都有 SIM 卡,其他方面似乎运行正常。我的印象是只有坏掉的手机才会返回null IMEI。显然不是这样的..

问题。这个 IMEI 号码到底是什么 - 即它存储在设备上的什么位置?当一部看似不错的手机返回其值为null时,这意味着什么?

编辑

我应该提一下,IMEI 号码并不总是null。大约有一半的时间似乎是有效的(尽管这很难衡量,因为我们有 5 部手机返回空 IMEI 号码 \有时

【问题讨论】:

  • 能否请您尝试拨打*#06#,并确认电话是否有有效的IMEI号码?
  • 这些电话已远程部署,因此我无法访问它们。据我了解,我们的客户使用 *#06# 获取 IMEI 号码从来没有遇到过问题?
  • 请联系客户要求他们为您确认
  • 我会问的。他们至少 4 次向我提供了 IMEI 号码,并且从未提及看到 null - 这些手机为 IMEI 号码返回 null。我应该提一下,这种情况并非一直发生(我会说大约一半的时间)。我们有一个调查应用程序,每个调查都应该通过一个 IMEI 号码发送,没有它他们是匿名的,这对我们没有用处
  • 好的,知道了,根据你的需要我可以给你一个答案,对你有帮助:)

标签: android telephonymanager imei


【解决方案1】:

在您发表评论后,要获得调查应用程序的唯一设备 ID,我建议您使用 Settings.Secure.ANDROID_ID 作为您的唯一 ID。

String   myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);

或者你可以同时使用

public String getUniqueID(){    
    String myAndroidDeviceId = "";
    TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (mTelephony.getDeviceId() != null){
        myAndroidDeviceId = mTelephony.getDeviceId(); 
    }else{
         myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 
    }
    return myAndroidDeviceId;
}

【讨论】:

  • 谢谢。我明天会实施这个:)
  • 从技术上讲,我很想知道这个问题的可能原因是什么?
  • 是的,适用于所有手机@ZachSmith
  • 在 Android Q 上获取 IMEI 为空?有人也发现了吗?
  • imei 在 Android 10 及更高版本上受限,因此普通应用无法获取它:developer.android.com/about/versions/10/privacy/…
猜你喜欢
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多