时间:2021-05-21
Android 10 中官方明确说明第三方应用无法获取到IMEI码:Android 10 中的隐私权变更,
Android 10 以下的版本,需要申请READ_PHONE_STATE权限。
Android ID 不具有真正的唯一性,
ROOT、刷机、恢复出厂设置、不同签名的应用等都会导致获取的 Android ID 发生改变,
并且不同厂商定制的系统的BUG会导致不同的设备可能会产生相同的 Android ID。
Android 10 中 MAC地址具有随机化的特征:Android 10 中的隐私权变更—MAC地址,
虽然目前大部分手机还不支持这个特性,但是随着厂商的跟进,这个方案就会逐渐作废
在上面这些设备自带的标识不够满足需求时,我们就要采用另外的方法了。
启动APP时,检查并读取根目录下保存有uuid的文件,若没有该文件,则视为一台新设备,创建文件并写入uuid。
并且要确保卸载应用时,该文件不会被系统携带着删除(这也是为什么要在根目录下创建的原因)。
Android 6 以下,添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />Android 6 及其以上,则需要在此基础上申请动态权限。
Android 10 及其以上,文件存储机制修改成了沙盒模式,即应用只能访问自己沙盒下的文件和公共媒体文件。
“得益”于沙盒机制,应用创建的文件属于自己的沙盒,那么当应用卸载时,也会随之删除。
目前可以添加以下一行代码解决沙盒问题:
<application ... android:requestLegacyExternalStorage="true">这样我们就能在“根目录”创建自己文件了。
Android 11 会强制执行沙盒模式,在这之前存储权限可以简单的分为“禁止”和“允许”,在这之后存储权限可以简单的分为“禁止”、“允许访问媒体文件”和“允许访问所有文件”。
“允许访问媒体文件”这是绝大多数应用能够申请到的,而“允许访问所有文件”只有文件管理类应用可以申请到。假如你不是该类应用但又申请了该权限,那么就会通不过Google Play的审核。
允许访问所有文件:android.permission.MANAGE_EXTERNAL_STORAGE
介绍到这儿,其实一个方案已经出来了:直接申请“允许访问所有文件”权限,后果就是不能通过Google Play的审核。
另外还有一个办法:我们暂时不升级SDK,针对 Android 10 (SDK 29)来开发应用,这样的话由于“向后兼容机制”,我们的应用是能够正常跑在 Android 11 系统上的。
以上就是Android 如何获取设备唯一标识的详细内容,更多关于Android 获取设备唯一标识的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
应用ID与包名区别每个Android应用都有一个唯一的应用ID.在Android设备和市场上,这个ID是你应用的唯一标识.若想在市场上更新应用,新应用的ID必须
微信小程序获取openid及用户信息的方法1.获取openid1.1获取code调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(op
功能:获取android设备中某一个app的cpu和内存环境:python和adb使用方法:使用adb连接android设备,打开将要测试的app,执行cpu/
路由器序列号和物理地址都是一种硬件标识,这种标识是唯一的。路由器序列号对厂家有点用,另外自己单位做设备管理可以用于登记核对设备。 路由器是连接两个或多个网络的
SESSION会话开启时,会首先发送一个对浏览器的唯一标识session_id的cookie(名字为PHPSESSID可以通过session_name()获取)