首页
学习
活动
专区
圈层
工具
发布

Android 如何获取有效的DeviceId

不要使用 MAC 地址 MAC 地址具有全局唯一性,无法由用户重置,在恢复出厂设置后也不会变化。因此,一般不建议使用 MAC 地址进行任何形式的用户标识。...在 Android 6.0(API 级别 23)到 Android 9(API 级别 28)中,无法通过第三方 API 使用 Wi-Fi 和蓝牙等本地设备 Mac 地址。...此外,在 Android 6.0 到 Android 9 版本中,您还必须拥有下列权限,才能访问通过蓝牙和 Wi-Fi 扫描获得的附近外部设备的 MAC 地址: 方法/属性 所需权限 WifiManager.getScanResults...当然还有其他bug,比如有些厂家获取为null之类的。 所以,ANDROID_ID是可以考虑的选择之一,后面细说。...这样可以做一个版本判断,低于10.0(或8.0)获取DeviceId,否则获取ANDROID_ID Mac地址 如果上面两步获取的还是null,那么可以使用mac地址,但是mac由于6.0之后无法通过WifiInfo.getMacAddress

8.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android11 WiFi连接流程梳理

    梳理一下Android11的wifi连接流程。 一、可以看到点击连接以后,如果config不为null,则先保存网络,再进行连接,所以即使连接失败,此网络依然在已保存网络列表里。...具体实现还是在service,wifimanager只是一个桥梁、 frameworks/base/wifi/java/android/net/wifi/WifiManager.java public...= null) listenerProxy.onFailure(NOT_AUTHORIZED); } } 三、wifiservice会判断uid的权限,然后这里会判断staid,因为android11...上层是支持了双wifi的,就是连接俩个AP,当然具体功能还要厂商自己实现,双AP具体可以看Android11 wifi开启流程,这里开启wifi时就会分配staid。...在这里会更新AP的信息,然后计分器打分,从底层获取macaddress,然后开启IPClient。

    4.4K10

    android获取Mac地址和IP地址

    最近项目突然加了个需求,上传用户的ip和mac,话不多说,直接上代码 获取Mac地址实际项目中测试了如下几种方法: (1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到...; } 但是经过测试该方法在android2.3, 2.2...较老版本有效,但是在android较新版本(例如4.0等)获取的数据不正确。...解决方法是,在上面代码中的最内层的for循环的if语句中对inetAddress进行格式判断,只有其是IPV4格式地址时,才返回值。...; } 网络上还有一种方法来获取本地IP地址(不过是在wifi状态下) 通过WifiManager, DhcpInfo获取IP地址以及网关等信息(在android4.0等版本也适用)...不过我自己在做项目过程中,用另外一种方法也解决了android4.0获取IP错误的问题: //获取本地IP public static String getLocalIpAddress()

    10.7K20

    在 Web 中获取 MAC 地址

    解决思路   这样的问题,能想到的解决思路只有两个:(当时的思路,其实思路远不止这些)   1、在 EXE 文件中嵌入一个浏览器控件,浏览器控件中显示 ERP 的页面,EXE 获取 MAC 地址后提交到服务器...2、写一个 OCX,让页面中的 JS 与 OCX 进行交互,OCX 获取到 MAC 地址后,将 MAC 返回给 JS,JS 通过 DOM 操作写入到对应的表单中,然后和用户名、密码一起提交给服务器。...OCX 中获取 MAC 地址的关键代码   OCX 中可以直接调用 Windows 操作系统的 API 函数,写起来也比较简单,代码如下: BSTR CGetMacCtrl::GetMacAddress...在 Web 中进行测试   在 Web 中测试也比较简单,通过 clsid 引入 OCX 文件,然后 JS 调用 OCX 文件中的函数,函数返回 MAC 地址给 JS,JS 进行 DOM 操作,代码如下...GetMacAddress() 获取 MAC 地址。

    17.3K50

    android 单点登录功能

    android 中获取机器唯一标示 deviceid //deviceId public static String getDeviceId(Context context) {...mac地址,mac地址很好理解,就是用户上网的上网许可证,这个买手机的时候,你翻开电池就知道里面有一个标签!.../** * 获取MAC地址,注意:手机重启,mac地址为null; * * @param context * @return mac地址; */ public static String...} } 2.获取token app进入app时要先获取token,获取token的时候我们要给服务端传递当前设备的设备号,当我们换了设备后设备号变了,返回的token值也就变了,那么原设备的token...3.请求交互携带token 每次客户端和服务端有任何交互的时候都要传递这个token参数,当我们在另一台设备登录的时候原设备上存的token就失效了,因为数据库里面当前用户的token已经在新设备获取toekn

    68720

    Android8.0、9.0、10.0、11.0的新特性兼容适配代码修改

    《Android Studio开发实战 从零基础到App上线(第2版)》在书后面的附录中给出了Android8和Android9的主要特性说明,附录表格如下图所示: 不过附录表格只涵盖了常见的功能代码适配...Android11 1、打包APK时必须勾选V2 依次选择菜单Build→Generate Signed Bundle/APK,在导出APK安装包的时候,V2复选框也要勾选,该选项可避免Janus漏洞...2、Android11新增了查询所有应用的权限QUERY_ALL_PACKAGES 通常调用PackageManger的getInstalledApplications方法可以获取已安装的应用列表,获取代码示例如下...3、Android11默认WebView不能访问存储卡上的网页 build.gradle中采用Android11编译时(targetSdkVersion 30),WebView无法访问存储卡的网页文件...在Android10及以下版本,该值默认为true,但从Android11开始该值默认为false。 设置代码示例如下: // 设置是否允许访问文件,如WebView访问存储卡的文件。

    1.4K20

    Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名.......获取设备id 获取ip地址 获取设备名称 获取设备型号 获取设备处理器 获取设备品牌 获取设备制造商 获取设备oaid 获取设备识别码 获取mac地址 获取应用包名 获取应用签名 获取app版本 获取版本号...获取分辨率 获取国家码 获取系统语言 获取设备网络代码 获取设备网络类型 获取android版本 获取操作系统版本 获取目标sdk版本号 获取应用第一次安装时间 获取设备id public static...) { return ""; } return tm.getDeviceId(); } 获取mac地址 public static String...|| wi.getMacAddress() == null) { return ""; } return wi.getMacAddress().

    6K30

    Android11 无Root 访问data目录实现、Android11访问data目录、Android11解除data目录限制、Android11 data空白解决

    Android11 无Root 访问data目录 实现 正文开始 关于Android11权限变化 作为普通安卓用户该如何方便快速地访问Android/data目录 开发者该如何实现无ROOT访问Data...解决方案 SAF方案缺点 放大招,ROOT权限直接解锁后带权访问Data目录 结语 封装好的工具类 正文开始 关于Android11权限变化 谷歌在Android11及以上系统中采用了文件沙盒存储模式,...App界面预览 开发者该如何实现无ROOT访问Data目录 1.首先,可根据需要获取所有文件管理权限: 在清单中声明: android:name="android.permission.WRITE_EXTERNAL_STORAGE...对呀,很明显使用传统的通过文件的path来实现文件管理岂不是更加方便? 我也这样觉得的,在我当时在对Android11进行适配的时候为了改动小,肯定是想用这个方法来进行适配,但是根本行不通!...当然,这个方案肯定会有些不如意,但是这已经是没方案中的最好的办法,毕竟谷歌限制不让你访问data目录,我们某些涉及文件管理的应用又确实需要访问,方案亲测可用,我已经按照以上方案在我的app中进行了Android11

    16.9K31

    拖不得了,Android11真的来了,最全适配实践指南奉上

    在搭载Android11系统的设备上,targetVersion小于11的时候,可以前台后台位置权限一起申请,并且对话框提供了文字说明,表示需要随时获取用户位置信息,进入设置选择始终允许即可。...” 也就是说,Android11中,如果你想去获取其他应用的信息,比如包名,名称等等,不能直接获取了,必须在清单文件中添加元素,告知系统你要获取哪些应用信息或者哪一类应用。...但是在Android 11 设备中,不好意思,不能随意使用这些信息了。只有当isUserUnlocked()方法返回true的时候,才能正常访问这些数据。...Android11中如果你设置为debug模式(debuggable 清单属性设置为 true),超出速率限制的JobScheduler API调用将返回 RESULT_FAILURE。...为了在正确定义无障碍操作的应用中创建更一致的行为,Android 11 绝不会分派触摸事件。

    7.6K340266

    Android 10 和Android 11的适配

    背景 最近在项目中着手做Android10和Android11 适配时候,期间遇到了不少的坑。之前有专门写过qq、微信分享的适配。但是此次在针对偏业务侧适配工作的时候还是碰到了一些新的问题。...在以上的场景中,涉及到了这些关键点: 把图片存储到sd卡 把绝对路径path传递给qq或者微信 1.1 直接访问sd卡的根目录 通过FileOutPutStream来完成,在Android10以下都没问题...但是,这里有个坑: 在Android10上不行,在Android11上又可以!!为什么? 因为Google改回来了,让Android11支持file://格式了。。。。 (wtf?...0)); cursor.close(); } 拿到绝对路径后,在Android11上都 glide、qq分享、第三方的图片选择框架等都可以正常访问。...完美避开无法访问公共目录的坑!!! 在Android11上 以上标志会自动失效。因此,应用存储的东西还在放在App-specific目录下。分享私有目录可以通过fileprovider 方式适配。

    1.7K41

    2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程

    WiFi mac地址和蓝牙mac地址。...=wifiInfo.getMacAddress(); 在Android 6.0系统上,这个方法失效了,返回 “02:00:00:00:00:00” 的常量,并被判定为有害应用 另,使用Android模拟器可以很方便的修改...在Android 2.3可以通过android.os.Build.SERIAL获取,非手机设备可以通过该接口获取。 在少数的一些设备上,会返回垃圾数据。...示例:1E2DFA89-496A-47FD-9941-DF1FC4E6484A 3 mac地址 硬件标识符,包括WiFi mac地址和蓝牙mac地址。...6 如何正确的获取设备的唯一标识 将获取的UUID永久存储在设备的KeyChain中,这个方法在应用第一次启动时,将获取的UUID存储进KeyChain中,每次取的时候,检查本地钥匙串中有没有,如果没有则需要将获取的

    5.3K20

    tinkerboard2 Android11系列-bootloader部分的编译

    前一篇《第一款能运行Android11 的RK3399开发板tinkerboard2》已经对tinkerboard2的Android 11有个大致的介绍,这一期来聊聊tinkerboard2 Android11...后续的文章会从多个方面详细介绍如何基于官方的SDK定制一套Android固件。...准备工作 前一篇文章提到,目前tinkerboard2 Android11的源码已经开放,可以从https://github.com/TinkerBoard2-Android获取其源码,但是github...12.png tinkerboard2 Android11的SSBL tinkerboard2 Android11的SSBL,也就是uboot,源码已经全部提供,在SDK根目录的uboot文件夹中。...在这三个部分中,uboot是完全开源的,也是asus修改比较多的,如果大家不想下载整个SDK,也可以单独浏览这部分的代码,其源码地址为 https://github.com/TinkerBoard2-Android

    1.6K50

    2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程

    ,包括WiFi mac地址和蓝牙mac地址。...=wifiInfo.getMacAddress(); 在Android 6.0系统上,这个方法失效了,返回 “02:00:00:00:00:00” 的常量,并被判定为有害应用 另,使用Android...在Android 2.3可以通过android.os.Build.SERIAL获取,非手机设备可以通过该接口获取。 在少数的一些设备上,会返回垃圾数据。...示例:1E2DFA89-496A-47FD-9941-DF1FC4E6484A 3 mac地址 硬件标识符,包括WiFi mac地址和蓝牙mac地址。...6 如何正确的获取设备的唯一标识 将获取的UUID永久存储在设备的KeyChain中,这个方法在应用第一次启动时,将获取的UUID存储进KeyChain中,每次取的时候,检查本地钥匙串中有没有,如果没有则需要将获取的

    5.6K20
    领券