Android设备是否具有唯一ID,如果是这样,使用Java访问它的简单方法是什么?
我需要为Android应用程序使用唯一的ID,我认为该设备的序列号将是一个很好的候选人.如何在我的应用中检索Android设备的序列号?
我正在开发一个针对Android 4.0(API 14)及更高版本的Android应用程序.
我正在寻找一个每个设备唯一的序列号,并且这个序列号永远存在(与设备一起死亡,在出厂重置后不会改变).
我在网上发现了很多关于Android设备的唯一标识符的结果,但在android.os.Build.SERIAL数字上却很少.
到目前为止,我已经消除了ANDROID_ID的使用,因为它可能会在出厂重置后发生变化.我也消除了IMEI的使用,因为Android设备可能是非手机的.我无法使用wifi或蓝牙MAC ADDRESS,因为如果未启用硬件(基于我在网络上找到的内容),设备可能没有这样的硬件和/或这样的mac地址可能无法读取.
我相信我可能会去Android设备序列号.
可以使用android.os.Build.SERIAL轻松访问它(因为它是在API级别9中添加的,不需要任何其他权限).
我的问题是:
考虑到我的应用程序针对Android 4.0(API 14)及更高版本,是每个设备唯一的android设备的android.os.Build.SERIAL号码吗?
目前,android.os.Build.SERIAL的文档指示:硬件序列号(如果可用).仅限字母数字,不区分大小写. 这是否意味着序列号可能不可用?
什么是满足上述条件的另一种替代方案?
我需要获取安装了我的应用程序的Android设备的硬件序列代码.您可以看到此硬件序列号Settings > About Device > Status > Serial number.
我虽然可以使用它Settings.Secure.ANDROID_ID or android.os.Build.SERIAL,但它们都没有用,这意味着它们没有给我我想要的唯一标识符.例如android.os.Build.SERIAL,当您运行命令adb devices时,获取ADB上显示的唯一ID .
请注意,这个问题的目标不是找到可以帮助我的另一个唯一标识符,而只是获取设备硬件序列号.
谢谢您的帮助.
编辑:
请注意,我不是在寻找字符串android.os.BUILD.SERIAL提供的值.我知道如何获得这个价值,但我对此并不感兴趣.
我有三星设备,因此,他们使用的序列号与android.os.BUILD.SERIAL提供的序列号不同.
我正在尝试以编程方式获取设备序列号。我使用了以下行:
Build.SERIAL
Run Code Online (Sandbox Code Playgroud)
返回如下内容:
95b9efad04ad28
但是,在设备上进行设置时,我看到它显示了不同的字符串:
有人能指出我正确的方向吗?
我正在处理重复出现的序列号主题,以提供唯一的ID.
我试试这个:
String serial = null;
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
serial = (String) get.invoke(c, "ro.serialno");
} catch (Exception ignored) {
}
Run Code Online (Sandbox Code Playgroud)
和
StringBuilder sb = new StringBuilder();
sb.append("SERIAL ").append(android.os.Build.SERIAL).append("\n");
textReportAdmin.setText(
sb.toString());
Run Code Online (Sandbox Code Playgroud)
两者都给出相同的值: C4F12FDD949F22F
在标签的方框和标签上,序列号为: RF2C202WYME
我在选项卡上工作,无法使用
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId();
Run Code Online (Sandbox Code Playgroud)
在我的情况下,IMEI是空的.
SERIAL是我所需要的,但我需要它在标签后面的条形码贴纸上显示的清晰版本.
我想这有可能,因为,当进入系统应用程序,并查看设备的状态,它显示清楚...
如何将android.os.Build.SERIAL返回的值转换为人类可见的值?
EDITION:我也查了一下:
sb.append("PRODUCT ").append(android.os.Build.PRODUCT).append("\n");
sb.append("BOARD ").append(android.os.Build.BOARD).append("\n");
sb.append("BOOTLOADER ").append(android.os.Build.BOOTLOADER).append("\n");
sb.append("BRAND ").append(android.os.Build.BRAND).append("\n");
sb.append("CPU_ABI ").append(android.os.Build.CPU_ABI).append("\n");
sb.append("CPU_ABI2 ").append(android.os.Build.CPU_ABI2).append("\n");
sb.append("DEVICE ").append(android.os.Build.DEVICE).append("\n");
sb.append("DISPLAY ").append(android.os.Build.DISPLAY).append("\n");
sb.append("FINGERPRINT ").append(android.os.Build.FINGERPRINT).append("\n");
sb.append("HARDWARE ").append(android.os.Build.HARDWARE).append("\n");
sb.append("HOST ").append(android.os.Build.HOST).append("\n");
sb.append("ID ").append(android.os.Build.ID).append("\n"); …Run Code Online (Sandbox Code Playgroud) 有谁知道如何在 C# 中使用 xamarin 表单检索设备的序列号?
我进行了很多研究并尝试了一些但无法使其发挥作用。
我正在尝试开发移动应用程序并发布到平板电脑进行测试,因此我需要区分这些设备,或者有人有其他替代方案可以分享吗?