由于 Window 的 decorView 默认是设置有 10dp 的padding。需要获取到decorView后设置其padding为(0, 0, 0, 0) 即可。...Logger.i(TAG, "onStart") super.onStart() setWindowParam() } /** * 设置dialog的
不要使用 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
在Android11 wifi连接流程中我们代码跟踪到了supplicant中开始associate,关联成功以后就是四次握手然后连接成功。...连接成功以后还需要分配IP地址,才可以通信,这一节我们看一下IP地址的获取流程。 一、在ClientModeImpl中有一个函数startIpClient。...这俩个地方的区别就是isFilsConnection的不同,连接过程中isFilsConnection为true,把IPClinet先关掉。...= null) {这个判断条件一定是不成立的,因为在连接时执行过stopIpClient。...到了这一步就和Android11 DHCP流程接上了。
梳理一下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。
前言: 在Android O之前,HAL是一个个的.so库,通过dlopen来进行打开,库和framework位于同一个进程。如下图所示: ?...在Android O之后,framework和hal运行于不同的进程,所有的HAL采用新的HIDL技术来完成。 ?...获取 MacAddress 为例看一下谷歌的实现 这是一个完整的 HIDL 接口的实现: /frameworks/opt/net/wifi/service/java/com/android/server...* @return string containing the MAC address, or null on a failed call */ public String getMacAddress...* @return string containing the MAC address, or null on a failed call */ public String getMacAddress
JDK6以后 java.net.NetworkInterface提供了完整的方法用于获取网络设备信息。...调用 NetworkInterface.getNetworkInterfaces()可以返回所有网络设备 调用NetworkInterface.getHardwareAddress()就可以获取指定网卡的...提供getMacAddress方法用于获取指定设备的MAC地址 NetworkUtil.java package net.gdface.facelog.device; import java.net.InetAddress...,Radix.DEC); } /** * 返回指定{@code address}绑定的网卡的物理地址(MAC) * @param address * @return...地址的字符串 */ public static String getMacAddress(NetworkInterface nic,String separator) {
最近项目突然加了个需求,上传用户的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()
今天遇到一个问题,要求不打开Wifi的前提下获取Mac地址,所以针对Android上Mac地址的获取做了总结。 MAC地址:每个接入网络的设备都有一个专门的序号,这个序号就是MAC。...手机里的MAC特指WIFi无线网卡的MAC地址。...手机获取MAC地址的方法有以下几种: 1.通过WifiManager获取,代码如下: String macAddress = null, ip = null; WifiManager wifiMgr...Linux底层的方法获取 public static String getLocalMacAddress() { String macSerial = null; String...第二种是必须在打开wifi的前提下才可以获取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 地址。
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
《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访问存储卡的文件。
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().
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
Android下如何获取Mac地址?...1、需要在AndroidManifest.xml文件中添加权限 android:name="android.permission.ACCESS_WIFI_STATE"...getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress
在搭载Android11系统的设备上,targetVersion小于11的时候,可以前台后台位置权限一起申请,并且对话框提供了文字说明,表示需要随时获取用户位置信息,进入设置选择始终允许即可。...” 也就是说,Android11中,如果你想去获取其他应用的信息,比如包名,名称等等,不能直接获取了,必须在清单文件中添加元素,告知系统你要获取哪些应用信息或者哪一类应用。...但是在Android 11 设备中,不好意思,不能随意使用这些信息了。只有当isUserUnlocked()方法返回true的时候,才能正常访问这些数据。...Android11中如果你设置为debug模式(debuggable 清单属性设置为 true),超出速率限制的JobScheduler API调用将返回 RESULT_FAILURE。...为了在正确定义无障碍操作的应用中创建更一致的行为,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 方式适配。
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中,每次取的时候,检查本地钥匙串中有没有,如果没有则需要将获取的
在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。...2017年6月10日00:26:48 删除之前获取MAC地址方法,重新更新一下: 哎,有时候这活干的真是心累,没辙~按着自己的方向继续前行吧~ 今天,突然给我发个链接,说什么Android 6.0获取MAC...地址,返回的都是02:00:00:00:00:00。...经过排查,发现了下面一些结论,了解了解: 从Android 6.0之后,android 移除了通过 WiFi 和蓝牙 API 来在应用程序中可编程的访问本地硬件标示符。...现在 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法都将返回 02:00:00:00:00:00 。
前一篇《第一款能运行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
,包括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中,每次取的时候,检查本地钥匙串中有没有,如果没有则需要将获取的