2

我找到了两种在 android 中获取设备 ID 的方法,但我不知道哪一种更好,它们之间有什么区别

方法一

public static String getDeviceId2(Context context) {


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

        return androidId;
    }

方法二

public static String getDeviceId(Context context) {

        if (PermissionManager.getInstance().hasSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == true) {

            return ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
        } else {
            return "";
        }
    }
4

2 回答 2

2

ANDROID_ID

可以换。在 8.0 中,它会在重新安装您的应用程序时发生变化

在 Android 8.0(API 级别 26)和更高版本的平台上,一个 64 位数字(表示为十六进制字符串),对于应用签名密钥、用户和设备的每个组合都是唯一的。ANDROID_ID 的值由签名密钥和用户限定。如果在设备上执行恢复出厂设置或 APK 签名密钥更改,则该值可能会更改。有关平台如何在 Android 8.0(API 级别 26)及更高版本中处理 ANDROID_ID 的更多信息,请参阅 Android 8.0 行为更改。

注意:对于在将设备更新到 Android 8.0(API 级别 26)或更高版本之前安装的应用程序,如果应用程序在 OTA 后卸载并重新安装,则 ANDROID_ID 的值会发生变化。为了在 OTA 到 Android 8.0 或更高版本后的卸载过程中保留值,开发人员可以使用键/值备份。

getDeviceId()

在 8.0 中已弃用

于 2018-02-13T15:37:22.263 回答
1

第一种方法是正确的。Second 不能在没有 sim 卡的设备上工作

于 2018-02-13T15:35:12.133 回答