plus_plugins icon indicating copy to clipboard operation
plus_plugins copied to clipboard

[Bug]: Can't get androidID

Open kaichun831 opened this issue 2 years ago • 16 comments

Platform

Android 11

Plugin

device_info_plus

Version

4.0.0

Flutter SDK

2.10.3

Steps to reproduce

null

Code Sample

var myDeviceInfo = DeviceInfoPlugin();     
var device = readAndroidBuildData(await myDeviceInfo.androidInfo);
mobileId = device['androidId'].toString();  // null

Logs

{version.securityPatch: 2020-11-05, version.sdkInt: 30, version.release: 11, version.previewSdkInt: 0, version.incremental: 7027799, version.codename: REL, version.baseOS: , board: goldfish_x86_64, bootloader: unknown, brand: google, device: generic_x86_64_arm64, display: RSR1.201211.001, fingerprint: google/sdk_gphone_x86_64/generic_x86_64_arm64:11/RSR1.201211.001/7027799:user/release-keys, hardware: ranchu, host: abfarm394, id: RSR1.201211.001, manufacturer: Google, model: sdk_gphone_x86_64, product: sdk_gphone_x86_64, supported32BitAbis: [x86, armeabi-v7a, armeabi], supported64BitAbis: [x86_64, arm64-v8a], supportedAbis: [x86_64, x86, arm64-v8a, armeabi-v7a, armeabi], tags: release-keys, type: user, isPhysicalDevice: false, androidId: null, systemFeatures: [android.hardware.sensor.proximity, android.software.adoptable_storage, android.hardware.sensor.accelerometer, android.software.controls, android.hardware.faketouch, android.software.backup, android.hardware.touchscreen, android.hardware.touchscreen.multitouch, android.software.print, android.software.activities_on_secondary_displays, android.software.voice_recognizers, android.software.picture_in_picture, android.hardware.fingerprint, android.hardware.sensor.gyroscope, android.software.vulkan.deqp.level, android.software.cant_save_state, android.hardware.sensor.relative_humidity, android.hardware.bluetooth, android.hardware.camera.autofocus, com.google.android.feature.GOOGLE_BUILD, android.hardware.telephony.gsm, android.software.incremental_delivery, android.hardware.camera.concurrent, android.hardware.audio.output, android.software.verified_boot, android.hardware.camera.flash, android.hardware.camera.front, android.hardware.screen.portrait, android.hardware.sensor.ambient_temperature, android.software.home_screen, android.hardware.microphone, android.software.autofill, android.software.securely_removes_users, android.hardware.bluetooth_le, android.hardware.sensor.compass, android.hardware.touchscreen.multitouch.jazzhand, android.hardware.sensor.barometer, android.software.app_widgets, android.software.input_methods, android.hardware.sensor.light, android.hardware.vulkan.version, android.software.companion_device_setup, android.software.device_admin, com.google.android.feature.WELLBEING, android.hardware.wifi.passpoint, android.hardware.camera, android.hardware.screen.landscape, android.hardware.ram.normal, android.hardware.sensor.hinge_angle, android.software.managed_users, android.software.webview, android.hardware.camera.capability.manual_post_processing, android.hardware.camera.any, android.hardware.camera.capability.raw, android.hardware.vulkan.compute, android.software.connectionservice, android.hardware.touchscreen.multitouch.distinct, android.hardware.location.network, android.hardware.camera.ar, android.software.cts, android.hardware.camera.capability.manual_sensor, android.software.app_enumeration, com.google.android.apps.dialer.SUPPORTED, android.hardware.camera.level.full, android.hardware.wifi.direct, android.software.live_wallpaper, com.google.android.feature.GOOGLE_EXPERIENCE, android.software.ipsec_tunnels, com.google.android.feature.EXCHANGE_6_2, android.hardware.location.gps, android.software.midi, android.hardware.wifi, android.hardware.location, android.hardware.vulkan.level, android.software.secure_lock_screen, android.hardware.telephony, android.software.file_based_encryption, null]}

Flutter Doctor

[√] Flutter (Channel stable, 2.10.3, on Microsoft Windows [Version 10.0.19044.1766], locale zh-TW)
    • Flutter version 2.10.3 at D:\software\KG\SDK\Flutter_SDK\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 7e9793dee1 (4 months ago), 2022-03-02 11:23:12 -0600
    • Engine revision bd539267b4
    • Dart version 2.16.1
    • DevTools version 2.9.2

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\USER\AppData\Local\Android\sdk
    • Platform android-32, build-tools 31.0.0
    • Java binary at: D:\software\KG\AndroidStudioFox\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.7)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.31911.196
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2020.3)
    • Android Studio at D:\software\KG\AndroidStudioFox
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[√] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at D:\software\KG\IDE\IntelliJ IDEA Community Edition 2021.1.1
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19044.1766]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 102.0.5005.115
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 103.0.1264.37
    ! Device emulator-5554 is not authorized.
      You might need to check your device for an authorization dialog.

[√] HTTP Host Availability
    • All required HTTP hosts are available

kaichun831 avatar Jun 29 '22 09:06 kaichun831

Same here on v4.0.0 but on Change Log:

  • Breaking change Remove AndroidId getter to avoid Google Play policies violations

alexmaycon avatar Jun 29 '22 12:06 alexmaycon

Same here on v4.0.0 but on Change Log:

  • Breaking change Remove AndroidId getter to avoid Google Play policies violations

How to solve it?

popsams avatar Jun 29 '22 18:06 popsams

Same here on v4.0.0 but on Change Log:

  • Breaking change Remove AndroidId getter to avoid Google Play policies violations

How to solve it?

I started to generate a unique identification (Uuid) and save it in the device's SharedPreferences and use this Uuid to identify it.

https://pub.dev/packages/uuid

alexmaycon avatar Jun 29 '22 18:06 alexmaycon

@alexmaycon I would not recommend doing that, since once the user deletes the app and reinstall it again you will get a different uuid which it isn't the same one the user had perviously.

devmuaz avatar Jun 29 '22 20:06 devmuaz

@alexmaycon I would not recommend doing that, since once the user deletes the app and reinstall it again you will get a different uuid which it isn't the same one the user had perviously.

I understand, but in my case this is not a problem, the function is just to identify the device after the user logs into the app.

alexmaycon avatar Jun 29 '22 21:06 alexmaycon

How are we achieving getting uniqueId, Uuid generation doesn't solve our problem

UlasKasim-dusyeri avatar Jun 30 '22 12:06 UlasKasim-dusyeri

hi, i got this issue too (androidId = null)

trying downgrade with the version 3.2.4, and the androidId comeback. is there any solutions with latest version (^4.0.0) to achieve this androidId??

Sultandi avatar Jul 01 '22 02:07 Sultandi

How are we achieving getting uniqueId, Uuid generation doesn't solve our problem

https://developer.android.com/training/articles/user-data-ids

alexmaycon avatar Jul 01 '22 16:07 alexmaycon

Same here! UUID is not an ideal solution.

oakstair avatar Jul 05 '22 14:07 oakstair

Changed to using advertising ID. (Android only) It's not perfect, but ... (AD ID -> Hashing)

ttb-inc avatar Jul 10 '22 07:07 ttb-inc

device:xiaomi11 androidId = null

LoveBabyForeve avatar Jul 13 '22 08:07 LoveBabyForeve

the same device , old project is ok, new project get the deviceid is null

qwkings avatar Jul 16 '22 07:07 qwkings

使用^3.2.4版本,^ 4.0.0已经无法获取了,源码中已经删除了获取id的代码

LoveBabyForeve avatar Jul 21 '22 07:07 LoveBabyForeve

FYI there is a new plugin for getting the Android ID 🙂 https://pub.dev/packages/android_id

nohli avatar Aug 06 '22 16:08 nohli

@nohli nice work buddy!

devmuaz avatar Aug 06 '22 16:08 devmuaz

Why hasn't this been removed from the interface or marked as deprecated? It's really confusing that this method doesn't work on the newest version of the package.

mchudy avatar Aug 09 '22 13:08 mchudy

FYI there is a new plugin for getting the Android ID 🙂 https://pub.dev/packages/android_id

Hi, thank you for this. Does it comply with Google Play's policies? I see it relies on Settings.Secure.ANDROID_ID

jmgeffroy avatar Aug 11 '22 14:08 jmgeffroy

@jmgeffroy I believe it does, read carefully this section Google Play

devmuaz avatar Aug 11 '22 14:08 devmuaz

@jmgeffroy I believe it does, read carefully this section Google Play

On that page, when collapsing Persistent identifiers, including Android ID, it says

Use for non-advertising purposes You can use persistent identifiers as long as you have a privacy policy and handle the data in accordance with the Developer Distribution Agreement and all applicable privacy laws in the areas where you make your app available.

nohli avatar Aug 11 '22 14:08 nohli

@nohli Oh dear! didn't catch that actually, I focused on this one

Apps using a persistent ID other than the advertising ID may receive a policy violation warning via the publisher site or the email address used to register the account.

Thank You 🙏🏻

devmuaz avatar Aug 11 '22 15:08 devmuaz

@jmgeffroy I believe it does, read carefully this section Google Play

On that page, when collapsing Persistent identifiers, including Android ID, it says

Use for non-advertising purposes You can use persistent identifiers as long as you have a privacy policy and handle the data in accordance with the Developer Distribution Agreement and all applicable privacy laws in the areas where you make your app available.

Hi, thanks! Yes, that's right. I double-checked the policies and we can use such IDs if we declare we do and explain why. Cheers

jmgeffroy avatar Aug 12 '22 08:08 jmgeffroy

@jmgeffroy great! If you're interested, you could open a PR in the android_id README for explaining the necessary steps when using the id.

nohli avatar Aug 12 '22 09:08 nohli

Hi. Why device_info_plus ^3.2.4 installed with device_info_plus_platform_interface 2.6.0, in which androidID was removed in version 2.5.0?

pubspec.lock:

device_info_plus:
    dependency: "direct main"
    description:
      name: device_info_plus
      url: "https://pub.dartlang.org"
    source: hosted
    version: "3.2.4"
  device_info_plus_linux:
    dependency: transitive
    description:
      name: device_info_plus_linux
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.1.1"
  device_info_plus_macos:
    dependency: transitive
    description:
      name: device_info_plus_macos
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.2.3"
  device_info_plus_platform_interface:
    dependency: transitive
    description:
      name: device_info_plus_platform_interface
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.6.0"
  device_info_plus_web:
    dependency: transitive
    description:
      name: device_info_plus_web
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.1.0"
  device_info_plus_windows:
    dependency: transitive
    description:
      name: device_info_plus_windows
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.1.1"

srnden avatar Aug 12 '22 11:08 srnden

@srnden because unfortunately the version was not updated as a breaking change (new major version).

You could use

dependency_overrides:
  device_info_plus_platform_interface: 2.5.0

Or maybe better, don't use overrides, use the latest version and also add android_id.

@miquelbeltran how about publishing a minor update of the platform interface, including the parameter androidId and also a major update without it?

2.7.0 would revert removing androidId 3.0.0 would add it again

nohli avatar Aug 12 '22 12:08 nohli

Yeah, we need to be more careful, this is not the first time this happens.

The whole federated plugin architecture is a mess, and I am one more mess like this to refactor everything into plain old plugins.

I'll take care of reverting the change.

miquelbeltran avatar Aug 14 '22 08:08 miquelbeltran

The reverted code has been published: https://github.com/fluttercommunity/plus_plugins/pull/1020

miquelbeltran avatar Aug 14 '22 09:08 miquelbeltran

I think you guys may need this to get device id in Android:

https://pub.dev/packages/platform_device_id

yingshaoxo avatar Jan 09 '23 06:01 yingshaoxo

I think you guys may need this to get device id in Android:

https://pub.dev/packages/platform_device_id

ALERT: Seems like this package is not being maintained anymore.

ansar-859 avatar Jan 25 '23 11:01 ansar-859

https://pub.dev/packages/android_id

nohli avatar Jan 25 '23 13:01 nohli