繁体   English   中英

Android 10 中没有适用于 Android 开发者的 IMEI

[英]No IMEI for Android Developers in Android 10

由于 Android 非常重视安全性并试图使新的 android 版本更安全,因此开发人员很难跟上新的安全功能并找到旧方法的替代方案,使他们的应用程序与旧功能兼容。

这个问题是关于新Android 10中的IMEI! 使用以下代码,旧方法非常容易获取 IMEI 号码

  String deviceId = "";

    if (Build.VERSION.SDK_INT >= 26) {
        if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
            deviceId = telMgr.getMeid();
        } else if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
            deviceId = telMgr.getImei();
        } else {
            deviceId = ""; // default!!!
        }
    } else {
        deviceId = telMgr.getDeviceId();
    }

在新的 Android 10 中,现在限制获取 IMEI 号码。 根据android文档

应用程序必须具有 READ_PRIVILEGED_PHONE_STATE 特权才能访问设备的不可重置标识符,包括 IMEI 和序列号。

问题是当我们尝试询问运行时权限时

  android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

我的编译器无法识别此权限,并且我在此行上出错,但是当我在清单文件中询问此权限时,它确实识别了此行,但警告说此权限仅适用于系统应用程序。

我想让我的应用与 Android 10 兼容并想获得 IMEI。 如何在不成为设备​​所有者或个人资料所有者的情况下在 Android 10 中获取 IMEI 号码?

只有设备所有者应用才能读取唯一标识符,或者您的应用必须是具有READ_PRIVILEGED_PHONE_STATE的系统应用。 您不能为普通应用程序请求此权限。

Android 10 限制开发者访问 IMEI 号码。

您可以通过获取软件 ID 来获得替代解决方案。 您可以使用软件 ID 作为唯一 ID。 请找到我在应用程序中使用的以下代码。

 public static String getDeviceId(Context context) { 

    String deviceId;

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {

deviceId = Settings.Secure.getString(context.getContentResolver(),Settings.Secure.ANDROID_ID);

}else {

final TelephonyManager mTelephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);



     if (mTelephony.getDeviceId() != null) {
            deviceId = mTelephony.getDeviceId();
        } else {
            deviceId = Settings.Secure.getString(
                    context.getContentResolver(),
                    Settings.Secure.ANDROID_ID);
        }
    }

return deviceId;

}

要获得唯一标识符,您可以使用FirebaseInstanceId.getInstance().getId(); String uniqueID = UUID.randomUUID().toString(); . 在这里查看最佳实践https://developer.android.com/training/articles/user-data-ids#java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM