Foa*_*Guy 65 uuid android uniqueidentifier
我正在使用这个电话:
Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
获取设备的UID.我想我从多个设备获得相同的ID.这有可能吗?
相关ID是:9774d56d682e549c,显然有几个设备返回此ID的问题http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403
nin*_*nse 34
检查这个帖子,.但是你应该小心,因为它被记录为"可以在恢复出厂设置时更改".使用风险自负,可以在root手机上轻松更改.此外,似乎一些制造商的手机有重复数字线程的问题.根据您的尝试,我可能不会将其用作UID.
use*_*372 29
使用Android O,ANDROID_ID的行为将发生变化.每个用户在手机上的每个应用的ANDROID_ID都不同.
摘自:https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html
Android ID
在O中,Android ID(Settings.Secure.ANDROID_ID或SSAID)对于每个应用和设备上的每个用户具有不同的值.需要设备范围标识符的开发人员应改为使用可重置标识符(例如广告ID),从而为用户提供更多控制权.广告ID还提供面向用户的设置以限制广告跟踪.
另外在Android O中:
Vin*_*kal 15
所以,如果你想要独一无二的设备本身的东西,TM.getDeviceId() 应该是足够的.
以下是显示如何获取Telephony管理员ID的代码.您正在使用的Android设备ID可能会在出厂设置中更改,并且某些制造商在提供唯一ID方面存在问题.
TelephonyManager tm =
(TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String androidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);
Log.d("ID", "Android ID: " + androidId);
Log.d("ID", "Device ID : " + tm.getDeviceId());
Run Code Online (Sandbox Code Playgroud)
一定要采取权限TelephonyManager使用
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)
存在多种解决方案,但没有一个是完美的。让我们一一进行。
1. Unique Telephony Number (IMEI, MEID, ESN, IMSI)
此解决方案需要向您的用户请求 android.permission.READ_PHONE_STATE,这可能很难根据您制作的应用程序类型来证明。
此外,该解决方案仅限于智能手机,因为平板电脑没有电话服务。一个优点是该值在设备上恢复出厂设置后仍然存在。
2. MAC Address
3. Serial Number
4. Secure Android ID
在设备首次启动时,会生成并存储一个随机值。此值可通过 Settings.Secure.ANDROID_ID 获得。它是一个 64 位数字,应该在设备的生命周期内保持不变。ANDROID_ID 似乎是唯一设备标识符的不错选择,因为它可用于智能手机和平板电脑。
String androidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
但是,如果在设备上执行恢复出厂设置,该值可能会更改。制造商的流行手机也存在一个已知错误,其中每个实例都具有相同的 ANDROID_ID。显然,该解决方案并非 100% 可靠。
5. Use UUID
由于大多数应用程序的要求是识别特定安装而不是物理设备,因此如果使用 UUID 类,则是为用户获取唯一 ID 的好方法。Google 的 Reto Meier 在 Google I/O 演讲中提出了以下解决方案:
private static String uniqueID = null;
private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(
PREF_UNIQUE_ID, Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
Editor editor = sharedPrefs.edit();
editor.putString(PREF_UNIQUE_ID, uniqueID);
editor.commit();
}
} return uniqueID;
}
Run Code Online (Sandbox Code Playgroud)
在 Android 上识别特定设备并非易事。有很多很好的理由可以避免这种情况。最好的解决方案可能是使用 UUID 解决方案来识别特定的安装。信用:博客
我已经阅读了一些关于此的内容,遗憾的是,不应该依赖ANDROID_ID来唯一地识别单个设备.
它似乎没有在Android合规性要求中强制执行,因此制造商似乎以他们选择的方式实施它,包括一些将其更多地用作"模型"ID等.
另外,请注意,即使制造商已经编写了一个生成器来使其成为UUID(例如),也不能保证在出厂重置后仍然存在.
| 归档时间: |
|
| 查看次数: |
85197 次 |
| 最近记录: |