在android中获取设备ID

时间:2018-02-13 15:28:18

标签: android imei deviceid

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

方法1

public static String getDeviceId2(Context context) {


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

        return androidId;
    }

方法2

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 "";
        }
    }

2 个答案:

答案 0 :(得分:0)

第一种方法是正确的方法。第二次在没有SIM卡的设备上工作

答案 1 :(得分:0)

ANDROID_ID

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

  

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

     

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

getDeviceId()

在8.0中弃用