
android
文章平均质量分 85
峥嵘life
目前职业:android开发工程师
2016年江西农业大学计算机信息工程学院毕业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android初学者系统开发学习路线参考
这篇文章为Android系统开发初学者提供了一个为期一个月的学习路线规划。第一阶段主要围绕UI开发展开:第一周学习开发环境搭建、四大组件和基础布局;第二周进阶学习RecyclerView、自定义View和动画;第三周掌握Fragment交互和数据存储;第四周重点学习网络请求和Kotlin基础。计划强调每日文档总结和阶段性实战,通过新闻资讯APP项目整合所学知识,帮助新人快速掌握Android开发核心技能。原创 2025-08-08 17:03:03 · 1609 阅读 · 0 评论 -
Android14 通过AMS 实例获取前台Activity 信息
摘要 本文介绍了在Android14系统中通过ActivityManagerService(AMS)获取Activity信息的方法,重点分析了系统签名应用才能获取后台应用信息的限制。文章对比了获取前台Activity(getRunningTasks)、最近任务(getRecentTasks)和存活进程(getRunningAppProcesses)三种方式,指出getRunningTasks仍可有效使用,而新版getAppTasks和UsageStatsManager方法存在局限性。同时解释了后台任务与缓存原创 2025-08-08 09:57:08 · 1460 阅读 · 0 评论 -
Android14 锁屏密码修改为至少6位
Android 14系统锁屏密码最小位数修改为6位的方法分析。默认情况下,Android锁屏密码、PIN码和图案密码都支持最少4位设置。通过修改frameworks/base/core/java/com/android/internal/widget/LockPatternUtils.java文件中的两个常量(MIN_LOCK_PATTERN_SIZE和MIN_LOCK_PASSWORD_SIZE)即可实现将最小密码长度从4位改为6位。原创 2025-07-23 22:13:03 · 2556 阅读 · 0 评论 -
欧盟网络安全标准草案EN 18031详解
本文是关于EN 18031详解,2025年8月1号欧洲国家强制要求的网络安全要求,有兴趣的可以收藏看看。### 1、什么是EN 18031EN 是 "European Norm"的缩写,指欧洲标准 ;所以EN 18031 就是指的是欧盟网络安全标准草案18031,是一个针对网络安全或者系统安全的草案。### 2、为啥要学习 欧盟网络安全草案EN 18031? **2025年8月1日正式实施,不符合[RED指令](https://zhida.zhihu.com/search?conten原创 2025-07-23 22:07:47 · 3150 阅读 · 1 评论 -
Android13 研究可以静态注册的广播
Android13 可静态注册广播研究摘要 本文研究了Android13系统中可静态注册的广播类型。分析发现,相比旧版本,Android13对静态广播注册进行了严格限制,许多广播已无法静态注册。文章通过实测对比了常见广播的静态与动态注册效果,包括开机广播、网络变化、应用安装卸载等。测试代码展示了系统签名应用如何实现静态广播接收,并配套Service动态监听机制。研究发现,多数高频或敏感广播(如屏幕状态、电池变化)已禁止静态注册,仅保留部分基础广播(如开机完成、USB连接)。实验表明,Android13进一步原创 2025-07-11 10:47:43 · 1337 阅读 · 0 评论 -
Android15 无法接收到应用自身发出的广播分析解决
Android15 应用内广播接收问题分析与解决方案 在Android15及以上版本中,应用无法接收自身发送的普通广播,但在Android13及以下版本工作正常。分析表明问题可能源于ActivityManagerService对广播分发机制的优化调整。 关键发现: 问题出现在targetSdk≥34的应用中 系统广播(如网络变化)仍能正常接收 其他应用仍可接收该应用发送的广播 解决方案: 使用LocalBroadcastManager替代普通广播: 发送广播:LocalBroadcastManager.ge原创 2025-07-11 10:44:24 · 1146 阅读 · 0 评论 -
Android ANR分析总结
Android ANR分析总结 ANR(Application Not Responding)是Android系统检测到主线程长时间阻塞时触发的机制。常见原因包括主线程执行耗时操作(IO、网络请求等)、锁竞争和CPU资源不足。系统对不同场景设置了超时阈值(如输入事件5秒、前台广播10秒等)。 分析ANR的关键步骤: 查看logcat日志,搜索"ANR in"获取关键信息(如报错位置、超时原因) 检查/data/anr目录下的堆栈文件(需root权限),重点关注"main&quo原创 2025-07-02 11:59:38 · 2934 阅读 · 0 评论 -
Android Java语言转Kotlin语言学习指导实用攻略
本文是一篇Android开发者的Kotlin学习指南,主要内容包括: 学习背景:Android系统源码中Kotlin代码比例显著增加(如SystemUI、PackageInstaller等系统应用),开发者需要掌握Kotlin以适应趋势。 学习路径: 第一阶段(1个月):基础语法(变量声明、空安全、扩展函数等) 第二阶段(2个月):Android集成(协程、Jetpack组件、Compose UI) 第三阶段:架构实践与性能优化 转换技巧: Android Studio支持Java/Kotlin混合开发.原创 2025-06-20 19:31:07 · 1291 阅读 · 0 评论 -
Android Kotlin 用法对比Java使用小结
本文对比了Android开发中Kotlin与Java的主要差异,重点关注基础语法、类与对象、集合操作和Android特有功能。Kotlin通过更简洁的语法(如变量声明、空安全机制)、数据类、扩展函数等特性显著提升开发效率。在Android开发中,Kotlin的View Binding、协程等特性进一步简化了UI操作和异步编程。相比Java冗长的代码,Kotlin提供了更现代、安全的编程方式,使其成为Android官方推荐语言。开发者掌握这些核心差异可快速从Java转向Kotlin开发。原创 2025-06-20 18:14:43 · 1180 阅读 · 1 评论 -
Android xml的Preference设置visibility=“gone“ 无效分析解决
Android Preference 设置 visibility="gone" 无效问题分析 在 Android 原生 Settings 应用中,隐藏 Wifi 详情页的"添加设备"选项时发现直接设置 visibility="gone" 无效。问题分析: 原因:Preference 的可见性被代码控制,通过 AddDevicePreferenceController2 类中的 getAvailabilityStatus() 方法决定。原创 2025-06-14 18:12:40 · 1349 阅读 · 0 评论 -
Android 蓝牙默认名称设置分析总结
Android蓝牙默认名称设置分析总结 本文分析了Android系统中蓝牙默认名称的设置方法,基于Android 13源码。研究发现蓝牙名称与ro.product.model属性相关,而非常见的def_bluetooth_name或Settings属性。文章提供了四种设置方法: 修改ro.product.model属性值(需在build.prop或.mk文件中配置) 使用Settings.Secure.bluetooth_name记录蓝牙名称(仅用于查询) 应用层通过BluetoothAdapter.set原创 2025-06-14 18:07:27 · 1287 阅读 · 0 评论 -
最新版本Android Studio导入framework代码编译报错Cannot invoke method getFiles() on null object分析解决
Android Studio 导入framework jar包,还需要加入task代码才能让运行代码优先使用framework jar包的类;比如framework新增的类或者方法需要导入framework jar包才能调用系统新增的方法;还有就是系统一些隐藏的api或者类,比如SystemProp另外导入framework jar包后,有些系统隐藏api代码会爆红无法链接,但是编译通过,是正常的。现在的问题是2025 Android Studio新版本添加task编译代码会报一个空指针错误;原创 2025-06-04 12:42:12 · 1025 阅读 · 3 评论 -
Android设置界面层级为最上层实现
本文介绍了在Android系统中强制设置特定应用界面为最顶层的方法,通过修改系统底层代码实现,但存在Home键和后台任务失效等后遗症。文章还分析了悬浮框的实现代码、窗口类型层级关系和使用注意事项,包括权限管理、窗口类型选择、进程存活机制等。同时提供了查看当前窗口状态的系统命令,帮助开发者理解悬浮框与系统层级的交互原理。需要注意的是,这种强制置顶方式仅适用于特殊系统应用场景,普通开发建议使用标准悬浮窗实现方案。原创 2025-05-27 19:16:23 · 1419 阅读 · 0 评论 -
Android 无线认证适配
目前销售往国外的Android设备一般需要进行一些认证处理,否则可能会受到不同处罚。比如:如中国的 SRRC 认证、欧盟的 CE 认证、美国的 FCC 认证等等;“CA 认证”通常指中国信息通信研究院(China Academy of Information and Communications Technology, CAICT)提供的\**通信技术标准认证**,它是 Wi-Fi 设备进入中国市场的重要环节。 本文的无线认证主要是做CA认证相关内容。原创 2025-05-21 21:13:41 · 705 阅读 · 0 评论 -
Android13 wifi设置国家码详解
Android 13中,Wi-Fi国家码的设置对于设备在不同国家/地区的合规性至关重要。通过设置国家码,设备可以强制使用当地允许的Wi-Fi频段,避免因频段违规导致的法律风险。设置国家码可以通过adb命令或Java代码实现,其中WifiManager.setOverrideCountryCode是Android 11之后的主流方法。切换系统语言时,可以通过广播Intent.ACTION_LOCALE_CHANGED获取当前国家码并设置Wi-Fi国家码。国家码通常为大写字母,且需系统签名应用和特定权限。原创 2025-05-21 21:05:40 · 2762 阅读 · 0 评论 -
Android usb网络共享详解
Android USB网络共享功能允许设备通过USB连接将移动网络或Wi-Fi网络共享给其他设备(如电脑)使用。该功能涉及底层网络协议、USB通信和系统服务等多个层面。使用前提包括设备支持ADB并打开USB开关,原生Settings中显示USB网络共享开关,以及代码中检测USB网络共享是否支持。若开关无法启用,可能是系统USB未开启或未连接ADB等原因。Settings中的相关代码控制USB网络共享的显示与启用,核心组件包括UsbManager、TetheringManager等。原创 2025-05-14 21:47:40 · 1981 阅读 · 0 评论 -
Android 蓝牙开发调试总结
如果开发蓝牙相关功能,必须先掌握基本api知识和相关广播的监听;蓝牙用的功能基本都是系统签名权限的系统应用,比如Settings;本简单介绍蓝牙开发基本知识,有兴趣的可以看看。蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。原创 2025-05-07 22:35:43 · 1318 阅读 · 0 评论 -
Android 有线网开发调试总结
如果开发有线网相关功能,必须先掌握基本api知识和相关广播的监听;Android13 之后有线网是有暴露开关控制api的,Android11 之前是需要自己添加开关控制接口的。本简单介绍有线网开发基本知识,有兴趣的可以看看。原创 2025-05-07 22:33:46 · 1253 阅读 · 0 评论 -
Android 热点开发调试总结
如果开发热点相关功能,必须先掌握基本api知识和相关广播的监听;热点用的功能基本都是系统签名权限的系统应用,比如Settings;有些方案中需要设置热点不同的信道值,这个是Settings没有的功能;本简单介绍热点开发基本知识,有兴趣的可以看看。原创 2025-04-28 21:32:48 · 1256 阅读 · 0 评论 -
Android wifi开发调试总结
如果开发wifi相关功能,必须先掌握基本api知识和相关广播的监听;wifi调用的功能基本都是系统签名权限的系统应用,比如Settings;本简单介绍wifi开发基本知识,有兴趣的可以看看。adbshell 的 ifconfig可以获取当前设备网络节点信息;这些信息使用Android代码也是可以获取的;Android 获取网络ip有多种方式,有时候某种方式获取失败的情况下;原创 2025-04-28 21:04:36 · 1607 阅读 · 0 评论 -
Android 热点二维码简单示例
Android二维码图片生成和二维码扫描软件的设计Android 热点分享二维码功能简单介绍之前没介绍这么具体,并且没有提供到apk和源码。Android 原生设置有热点二维码分享功能,有些系统应用也会有这个需求。下面看看是如何实现的。本文是一个比较简单的内容。原创 2025-04-19 19:55:08 · 1421 阅读 · 2 评论 -
Android 下拉栏中的禁用摄像头和麦克风隐藏
Android下拉栏中有摄像头和麦克风禁用功能;但是点击禁用后会有些bug,比方多视窗异常,信源声音异常等问题;所以目前做法是直接隐藏掉禁用功能,算是规避手段了,出现问题就不问题删除,哈哈,当然如果有能力和时间去解决这个问题是更好的;市场上大部分手机上应该是解决了这些问题的,也可能是在某些场景进行了优化;我这里开发的是大屏设备,没有手机那么多顾虑和要求所以隐藏UI是目前最好的做法。如果你也有隐藏下拉栏UI或者简单修改下拉框UI的需要可以看看本文。原创 2025-04-19 19:50:51 · 1207 阅读 · 3 评论 -
Android Settings 有线网设置界面优化
快清明放假了,说点简单的,有线网设置,估计只对部分系统开发的人有点用。Android 原生设置应用好像大部分方案都是没有显示有线网设置界面的;从接触的方案看只有rk方案的原生设置应用显示了有线网设置界面,和热点设置界面是同级目录显示的。如下图所示:有线网DHCP自动获取模式下,是无法获取到ip的;只有在设置了静态ip的模式下,才显示ip和其他信息。如下图,所示:难道是RK从谷歌的一个调试分支下载的Settings源码?原创 2025-04-03 17:56:14 · 1106 阅读 · 0 评论 -
Android 拉起开发者设置界面命令和代码实现
本文记录点简单的知识。1、原生设置--》关于--》点击七次“版本号”条目 (会提示:已打开开发者选项)2、返回主界面--》系统设置--》开发者设置界面有些情况,原生设置是隐藏的或者不想打开原生设置,如何直接拉起开发者选项呢?是否有命令或者代码可以实现呢?下面简单介绍一下。一般我们看Settings 有啥暴露界面,看 AndroidManifest.xml中的 暴露Activity 就可以。通过DevelopmentSetting 可以搜索到下面Activity<activity...原创 2025-04-03 17:37:58 · 1348 阅读 · 0 评论 -
Android14 Settings应用添加有线网开关条目实现
背景:Android 原生Settings应用没有有线网开关条目;Tv平台一般是有有线网连接的,如果没有有线网控制条目是不太方便的;如果要在原生Settings添加有线网开关和显示有线网ip,要如何实现呢?目前主要的商显TV中,只有我开发的方案中有些原生设置Settings 在某些方案上有修改了原生Settings的添加有线网开关控制,视源、朗国、创维、三星那些都是没修改的。本文简单实现一下,有需要的可以参考修改。原创 2025-03-26 18:10:14 · 1131 阅读 · 0 评论 -
Android AccessPoint 已连接的wifi信息未显示处理
一个wifi列表未显示已连接的wifi信息问题记录。虽然新版本的原生Settings应用基本不会遇到这个问题,但是万一遇到可以参考这个简单适配。背景:很久以前的项目代码,移植的Settings的代码,代码获取的wifi列表信息是使用SettingsLib的接口获取 AccessPoint 列表数据。目前只有wifi5的模组硬件会遇到这个问题,wifi6模组的硬件没有这个问题。有可能是底层返回的某个信息不符合正常逻辑,所以才出现这样的问题。本文只是简单记录一下,估计对大部分开发人员是没啥用的。原创 2025-03-26 17:38:07 · 1165 阅读 · 0 评论 -
Android14 系统左右声音通道设置代码
Android 系统左右声音通道设置在有些场景下会有用,信源或者多音箱的条件下可能需要设置,还有些需求比如:用户偏好设置、将声音定位到特定方向,提升沉浸感。比如耳机接入Android设备后,设置声音通道左平衡,只有左边的耳机出声;设置声音通道右平衡,只有右边的耳机出声;上面这样就可以简单验证系统左右声音通道是否有效。网上基本找不到系统级的设置左右声音通道的代码,即使使用AI工具也搜不到。网上设置左右声音通道都是针对某个播放媒体对象进行设置,并不是全局的。原创 2025-03-19 17:51:50 · 942 阅读 · 0 评论 -
Android14 Log.isLoggable判断的分析
Android系统代码或者系统应用代码中经常有一些Dug打印,是可以在调试模式中查看的;比如:if(Log.isLoggable(TAG, Log.DEBUG)) {XXX}或者定义 boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);后面有些打印使用这个DEBUG属性来决定是否打印某些日志。之前我不太懂,也有看过源码,但是看到了native再后面就追不下去了,就没管了。后面各种搜索和研究后又有了新的发现。原创 2025-03-19 16:51:21 · 1107 阅读 · 0 评论 -
Android wifi的开关Settings值异常分析
有个项目需要通过开机后另外判断wifi的Settings属性值wifi_on进行wifi的一些处理。但是使用同一个系统软件包,烧录在两个板载有点差异的设备上,发现打开wifi后两个设备的wifi_on的值居然不一样;wifi开启状态一个显示为1;另外一个异常显示为2;代码值中只判断了值为1的处理,导致有些逻辑未执行。但是通过WifiManager获取wifi的开启状态,发现wifi又是开启的;有点奇怪,想分析看看。后面分析了一下系统的代码,有一些发现。下面简单分享介绍一下。原创 2025-03-14 19:14:52 · 1262 阅读 · 0 评论 -
Android14 串口控制是能wifi adb实现简介
adb功能比串口调试方便一些,比如可以直接传输文件,定向打印日志到电脑,投屏,安装电脑中的apk等功能。还有些情况是设备可以连接有线网,但是wifi有问题,上层接口无法打开adb,但是使用prop属性设置可以打开有线adb调试。有需要的可以收藏看看。本文只要介绍实现步骤,不详细介绍具体过程,adb相关过程之前已经分析过了,虽然有的过程分析不是很准确,但是对于定制化是很有作用的。(2)在设置界面或者 ifconfig命令 查看wifi或者有线的ip地址:(3)串口确认查看关键 adb 属性是否ok原创 2025-03-04 19:27:32 · 1095 阅读 · 0 评论 -
Android 系统开发的指导文档
比如自定义View,动画,项目开发模式MVVP,跨进程通信AIDL,Socket通信,wifi、蓝牙、录音、录像、Settings等等等。深入研究 Android Framework 的源码,了解系统服务的启动流程、核心组件的工作原理、消息传递机制等,学习其中的 LiveData、ViewModel、Room 等组件,提升开发效率和应用的架构质量。如字符串、颜色、图片、样式等的定义和使用方法,学会在不同的设备配置下合理地管理和适配资源,原创 2025-03-04 19:23:59 · 1392 阅读 · 0 评论 -
Android6到Android15版本新增的功能和api
目前市场上Android手机大部分都是Android11-14的版本;2024年发布Android15了,现在已经开始准备开发Android15的系统代码了;但是对于Android15 或者之前版本的新增功能和api都没啥印象;本文简单总结一下,有兴趣的可以看看。原创 2025-03-02 16:43:21 · 2522 阅读 · 1 评论 -
Android 15 的GRF平台开发说明
1、GRF ,Google Requirements Freeze 表示谷歌需求冻结某一个部分的需求冻结,后期改动会较小不影响正常使用;比如Android14-17底层内核和vendor逻辑基本不变;只需要适配Frameworks、APP、System 等固件即可使用最新版本的Android系统。2、下载一个GRF的源码,后续四个系统版本都可以用这个开发板进行升级简单的说就是Google后面会减少内核或硬件上的适配修改,主要适配上层逻辑,可以不用换新的硬件升级新的系统了。原创 2025-03-02 16:27:40 · 2138 阅读 · 0 评论 -
DeepSeek本地搭建 和 Android
过年前看到DeepSeek非常火,很多小视频也说DeepSeek是如何如何强大。我也想搭建DeepSeek玩玩!简单搜了一下本地搭建DeepSeek的环境要求,发现要求居然那么高:完全符合它的要求的电脑估计要两三万以上。看了下我的电脑肯定达不到这个要求,估计大部分开发人员的电脑都没那么高的配置吧。难道一般人搞不了?其实不搭建DeepSeek环境也能玩 DeepSeek,目前是有免费的网页版和App软件。我试了一下网页版本和App软件,都是比较简单功能的对话,目前还没有抖音旗下的豆包好用。原创 2025-02-22 16:14:29 · 3017 阅读 · 0 评论 -
Android wifi列表中去自身的热点
Android wifi列表中能搜索到自身的热点wifi?正常手机上都不会出现这个问题;可能是系统底层已经做了过滤处理。现实开发中Android设备的Wifi能搜索到自身热点也可能会存在。比如基于两个单独的wifi双模组硬件在设备上运行就有可能出现这个问题;之前同一个硬件上的双模组wifi硬件都是没有这个问题的。双模组wifi是为了更好支持wifi和热点隔离的硬件,Android 双模组的情况可能会存在wifi列表中搜索到自己的热点名称是可以正常连接,原创 2025-01-17 20:01:22 · 637 阅读 · 0 评论 -
Android wifi热点开关代码记录
wifi和热点开关的代码可以用WifiManager也可以调用ConnectivityManager的接口实现。下面记录一下。原创 2025-01-17 19:57:56 · 1037 阅读 · 0 评论 -
Android13 系统签名应用编译调试说明
Android11之前一直可以用系统的签名文件编译系统签名apk,但是开发Android13 的系统应用后,就有点问题了,发现使用系统签名文件编译的系统签名apk安装到设备上会失败,以为搞不了了,但是看到有的同事是OK的,等了一段时间后分析处理了。本文记录一下这种系统签名应用调试的过程。我之前安装的Android Studio 版本是2021年的,Android Gradle 版本是6.5;后面发现安装2024年的Android Studio,并且使用Gradle8.7 就ok,原创 2024-12-19 19:29:38 · 1611 阅读 · 2 评论 -
Android Studio版本升级那些事
Android Studio目前最新版本是 2024.2.1 主要版本特征是为了更好支持kotlin代码的编译运行。2017年的Android Studio 版本已经支持kotlin的正常开发了;但是真正比较完善的kotlin编辑的版本是2023年的版本;我这里不是想讲AndroidStudio对kotlin的支持,因为系统开发代码中kotlin虽然有,但是不多,影响比较小。本文主要是记录一下,Android Studio旧版本无法编译安装Android13 以后的签名应用。原创 2024-12-19 19:20:51 · 4205 阅读 · 0 评论 -
Android 系统应用重名install安装失败分析解决
系统开发过程中,你会发现一些系统应用编译后无法直接安装成功,为啥?具体是为啥导致无法正常安装?如果要正常安装需要怎么处理?刚开始我以为是系统应用重名不能直接安装,但是发现有些系统应用是可以直接安装的;所以还是要研究看看。本文简单分析解决一下这个问题!后面复现关键就是 Android 的 persistent 属性,persistent(翻译:持久的) 属性是系统应用用来保活的应用和服务的。原创 2024-12-11 19:29:24 · 2154 阅读 · 0 评论 -
Android Studio新版本的一个资源id无法找到的bug解决
Android Studio 导入以前的项目发现资源文件明明有id声明了,但是无法Java代码中无法识别的问题。比如switch 的case R.id.textView: 会编译报错,这个textView 已经在res的布局文件中有声明了。gradle 6.5 没有这个问题gradle 8.7 就有这个问题新下载的Android Studio默认都是使用的最新的gradle版本8.7,当然也能兼容旧版本的gradle。原创 2024-12-11 19:26:18 · 1496 阅读 · 0 评论