TelephonyManager 为 IMEI 号码返回 null:这可能是啥原因?
Posted
技术标签:
【中文标题】TelephonyManager 为 IMEI 号码返回 null:这可能是啥原因?【英文标题】: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 号码发送,没有它他们是匿名的,这对我们没有用处 好的,知道了,根据你的需要我可以给你一个答案,对你有帮助:) 【参考方案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/…以上是关于TelephonyManager 为 IMEI 号码返回 null:这可能是啥原因?的主要内容,如果未能解决你的问题,请参考以下文章
Android读取用户号码,手机串号,SIM卡序列号的实现代码