Android 的代码和 ADB 工具不同

问题描述 投票:0回答:1

我注意到直接从代码获取的 Android_id 值与通过 Android 调试桥 (ADB) 检索的 Android_id 值之间存在差异。我试图了解这种差异是如何发生的。

对于 Android 10 及更高版本,我正在寻找要使用的常量值。由于 Android 操作系统的权限发生变化,使用 device_id 不再可行。因此,我希望使用 android_id 作为替代。您能否提供任何见解或解决方案来解决这个问题?

我如何在代码中获取它:

var b = global::Android.Provider.Settings.Secure.GetString(global::Android.App.Application.Context.ContentResolver, global::Android.Provider.Settings.Secure.AndroidId);

我如何从 adb 获取它:

adb shell settings get secure android_id
xamarin xamarin.forms xamarin.android maui
1个回答
0
投票

我使用调试模式在 Xamarin 和 Maui 项目上测试了获取 ANDROID_ID 的方法。我发现id是一样的。但是当我使用 adb shell 获取 ANDROID_ID 时,我得到的 id 与代码不同。我还在Android Studio上创建了一个Android项目并在物理设备上进行了测试,但我遇到了同样的情况,ANDROID_ID不同。

我检查了有关 ANDROID_ID 的 Android 文档,然后我发现在 Android 8.0(API 级别 26)和更高版本的平台上,ANDROID_ID 的值由签名密钥和用户确定范围。如果设备恢复出厂设置或 APK 签名密钥发生更改,该值可能会发生变化。

它可以解释为什么代码和ADB shell之间的ANDROID_ID不同。由于签名密钥的原因,它们不能相同。

© www.soinside.com 2019 - 2024. All rights reserved.