Comments (6)
android.provider.Settings.Secure.getString(App.getInstance().getContentResolver(),android.provider.Settings.Secure.ANDROID_ID)
获取Android_ID的方式:目前来看除了网上流传的某些设备会返回相同“9774d56d682e549c”字符串,或为null的情况不能识别。Android_ID应该是最简单,相对来说最合适的获取设备唯一性的吧? 目前测试的设备没有为null,和返回9774d56d682e549c这个串。这个问题是否只发生在老版本或者很小众(譬如非洲市场)呢?如果不涉及到很精准的譬如快手一元抢购业务,是否可以就用Android_ID的方式相对代替成唯一ID?
另外还看到一种通过MediaDrm这个类获取一个设备唯一值,这个类是用在音视频版权保护上的类,目前检索到的资料没有大量的测试100%证明获取的id唯一和获取这个值的设备的兼容性是否好,未来官方是否会收紧这个类?所以这种方式保持怀疑态度。
from android_cn_oaid.
拜占庭容错方案 按我的理解是需要后台人员进行精准查询,目前有什么好的方案只通过Android端自己生成一个唯一ID呢?
from android_cn_oaid.
拜占庭容错方案 按我的理解是需要后台人员进行精准查询,目前有什么好的方案只通过Android端自己生成一个唯一ID呢?
我感觉的比较可靠的方案就是拜占庭容错方案
,要服务端人员写个设备ID接口进行配合,Android端同时尝试获取IMEI、OAID、伪造硬件ID、AndroidID以及自行生成的GUID,将这五种ID传到服务端存储起来,服务端可以加黑名单排除“000000-000-0000-00000000”之类的无效ID,具体实施方案可参阅这个哥们的开源项目“@No89757/Udid”。
快手一元购貌似也是类似的方案,采集IMEI、OAID、AndroidID、MAC及IP。
from android_cn_oaid.
拜占庭容错方案 按我的理解是需要后台人员进行精准查询,目前有什么好的方案只通过Android端自己生成一个唯一ID呢?
如果不结合服务端,Android端可以在APP首次安装使用时生成一个全局的UUID存到SharedPreferences及外部存储卡里,只要用户不卸载APP就可以保证设备唯一。
from android_cn_oaid.
以前是通过IMEI通过权限确定设备的唯一性,不过目前如果用户匿名权限关闭了,是不是就不能确定这个设备的唯一性了?看其他issues有的关闭权限返回的OAID是一个000000-000-0000-00000000这种常量,如何过滤掉这种未知的假OAID,未知常量的存在?
from android_cn_oaid.
如果不结合服务端,纯客户端的话,当IMEI
、OAID
及AAID
不可用时,可以使用GUID
来确保设备的唯一性,在Android6.0以上版本,只要用户不卸载APP就能保证唯一性,Android6.0以下版本就算卸载了APP基本上也能保证唯一性:
/**
* 随机生成全局唯一标识并存到{@code SharedPreferences}、{@code ExternalStorage}及{@code SystemSettings}。
* 为保障在Android10以下版本上的稳定性,需要加入权限{@code WRITE_EXTERNAL_STORAGE}及{@code WRITE_SETTINGS}。
* <pre>
* <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
* android:maxSdkVersion="29"
* tools:ignore="ScopedStorage" />
* <uses-permission
* android:name="android.permission.WRITE_SETTINGS"
* tools:ignore="ProtectedPermissions" />
* </pre>
*
* @return GUID,不会为空,但应用卸载后会丢失
* @see android.provider.Settings#ACTION_MANAGE_WRITE_SETTINGS
*/
@NonNull
public static String getGUID(@NonNull Context context) {
String uuid = getUuidFromSystemSettings(context);
if (TextUtils.isEmpty(uuid)) {
uuid = getUuidFromExternalStorage(context);
}
if (TextUtils.isEmpty(uuid)) {
uuid = getUuidFromSharedPreferences(context);
}
if (TextUtils.isEmpty(uuid)) {
uuid = UUID.randomUUID().toString();
OAIDLog.print("Generate uuid by random: " + uuid);
saveUuidToSharedPreferences(context, uuid);
saveUuidToSystemSettings(context, uuid);
saveUuidToExternalStorage(context, uuid);
}
return uuid;
}
from android_cn_oaid.
Related Issues (20)
- 编译报错 HOT 3
- 华为设备崩溃 HOT 2
- 荣耀手机 HONOR Model: JSN-L22 Release: 9 API: 28 进入黑屏卡死 HOT 3
- 荣耀11.23日发布新机型,并用自己提供oaid的获取方法,不再允许其他方式获取 HOT 23
- 小米隐私合规问题 HOT 2
- 华为P40 Pro海外版,崩溃 HOT 2
- Event:APP_SCOUT_WARNING Thread:main backtrace: HOT 3
- 找不到 荣耀的包 HOT 1
- 4.2.8版本远程依赖不了 HOT 4
- 这个只能在原生安卓使用是吧,unaipp能用吗 HOT 3
- 部分手机测试 获取 OAID 为 空 HOT 2
- 荣耀手机崩溃 HOT 4
- 荣耀手机遇到一个很奇怪的问题,同型号同系统版本有的能获取成功有的就不行
- 升级sdk版本后oaid的值变了 HOT 6
- 急!线上大面积华为,荣耀用户突遇崩溃!!! No imolementation found for boolean com,huawei.hms.ads,identifier,AdvertisingIdclient,isAdvertisingIdAvailable(android,content.Context) HOT 11
- 华为鸿蒙4.0手机不能使用DeviceIdentifier.getOAID(this);方法 HOT 22
- 荣耀获取OAID的逻辑优化,或者开放一个修改方法 HOT 5
- 华为荣耀手机获取OAID首次为空,要手动调用才能获取 HOT 4
- (求大佬指导)荣耀设备崩溃:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/hihonor/ads/identifier/AdvertisingIdClient; HOT 10
- Device.java中没有执行回调,导致DeviceIdentifier.register()监听不到onComplete()
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android_cn_oaid.