Android: How to programmatically access the device serial number shown in the AVD manager (API Version 8)

前端 未结 4 748
孤街浪徒
孤街浪徒 2020-11-28 07:54

How do I programmatically access the value shown in the image below ?

\"enter

4条回答
  •  感动是毒
    2020-11-28 08:29

    Up to Android 7.1 (SDK 25)

    Until Android 7.1 you will get it with:

    Build.SERIAL
    

    From Android 8 (SDK 26)

    On Android 8 (SDK 26) and above, this field will return UNKNOWN and must be accessed with:

    Build.getSerial()
    

    which requires the dangerous permission android.permission.READ_PHONE_STATE.

    From Android Q (SDK 29)

    Since Android Q using Build.getSerial() gets a bit more complicated by requiring:

    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE (which can only be acquired by system apps), or for the calling package to be the device or profile owner and have the READ_PHONE_STATE permission. This means most apps won't be able to uses this feature. See the Android Q announcement from Google.

    See Android SDK reference


    Best Practice for Unique Device Identifier

    If you just require a unique identifier, it's best to avoid using hardware identifiers as Google continuously tries to make it harder to access them for privacy reasons. You could just generate a UUID.randomUUID().toString(); and save it the first time it needs to be accessed in e.g. shared preferences. Alternatively you could use ANDROID_ID which is a 8 byte long hex string unique to the device, user and (only Android 8+) app installation. For more info on that topic, see Best practices for unique identifiers.

提交回复
热议问题