自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 Android SystemUI状态栏左侧显示实时网速功能

本文介绍在Android系统状态栏左侧实现实时网络速度显示功能的开发方案。主要包含以下核心内容:1) 功能特性包括状态栏左侧显示、自动单位换算、4秒更新频率及系统开关控制;2) 采用MVC架构设计,包括NetworkSpeedState数据模型、NetworkSpeedView自定义视图和NetworkSpeedController控制器;3) 关键实现涉及流量统计API调用、定时更新机制、深色模式适配和状态栏布局调整。该方案通过TrafficStats获取网络流量数据,经过计算处理后动态更新显示,并支持系

2025-11-08 09:30:00 279

原创 Android 14 动态修改Build.MODEL 值

摘要:本文分析了Android系统Build类的功能及实现机制,重点探讨了修改设备型号(Build.MODEL)的三种方法:1)通过修改系统属性ro.product.model实现全局修改;2)改写getString()方法直接返回新值;3)动态修改方案-针对特定应用进程修改Build.MODEL变量值。其中动态修改方案通过将MODEL改为volatile变量并增加setNewModel()接口,在目标应用的Activity.onCreate()中调用实现进程隔离修改。最后指出修改系统接口后需执行make

2025-11-07 09:08:26 1029

原创 Android杭研云电脑adb管控接口

本文介绍了ADB开关管控接口的设计与实现方案,重点阐述了其核心功能与安全机制。系统通过四个Binder接口实现ADB动态开关、状态查询和事件监听功能,底层基于Settings.Global.ADB_ENABLED设置项的读写操作。采用Binder身份降权机制解决权限问题,通过clearCallingIdentity方法实现系统进程特权提升。方案还支持状态变化回调通知,便于业务联动处理。该实现为企业设备管理提供了安全可控的ADB管控能力,避免了传统root/recovery操作的不便,适用于云设备、工控等多种

2025-11-07 09:06:28 72

原创 联通云智电脑接口规范实现

本文档介绍了InfoManager类的功能与使用规范,该类为云电脑系统提供设备信息查询服务。主要内容包括:1. 功能概述:封装设备属性、存储内存、电池状态等读取方法,采用单例模式实现;2. 接口说明:详细列出各查询方法签名、返回值及fallback机制;3. 使用规范:强调线程安全、权限要求、上下文生命周期管理等注意事项;4. 示例代码:展示典型调用方式及结果校验建议;5. 安全规范:特别指出设备标识的隐私风险及合规使用要求,包括审计日志、最小暴露原则等安全措施。文档旨在指导开发者正确集成该类,同时确保系统

2025-11-06 09:17:27 39

原创 Android中兴云电脑U盘识别方案

中兴云电脑在运营商/政企/能源/交通/行业政务云侧广泛落地,Android 平板端是最具规模化铺设能力的终端 SKU。但大量行业工作流仍存在高频 OTG U盘输入/拷贝/导入能力,比如:巡检报告、外场采集数据、工程固件、应急文件分发、警务执法采样、矿山/油气现场样本等。Android 中兴云电脑 U盘识别方案通过“文件抽象 + 双向安全流 + 虚拟盘符挂载”,实现不依赖系统/root、不依赖 hypervisor 的可规模化商用工程能力。UsbManager 扫描 interface。

2025-11-06 09:05:25 755

原创 Android联通云电脑U盘识别方案

联通云电脑在Android平板上实现商用级OTG U盘功能,通过文件系统抽象和分片流式传输技术,让用户能在云端直接访问平板插入的U盘数据。方案采用标准化协议,不依赖root权限,实现端到端安全传输,支持审计和管控策略。实测性能接近本地操作体验,满足政企客户安全要求,可助力云电脑从"补充终端"升级为"主生产力终端"。该技术消除了PC依赖,建立起线下到云端的数据通道,是联通云电脑Android端的核心生产力功能。

2025-11-05 09:04:17 36

原创 Android天翼云电脑U盘识别方案

摘要:天翼云电脑在政府和企业应用中面临Android平板外设支持不足的问题,特别是U盘OTG功能缺失导致用户仍需保留本地PC。为此,方案采用Android本地U盘文件系统抽象+双向传输+云端虚拟盘映射的架构,无需系统root或厂商定制。通过libaums实现文件操作,云端采用Dokan/FUSE模拟真实盘符,并强化安全策略(白名单、审计等)。该方案以低侵入方式补齐U盘功能,同时为打印机等外设支持奠定基础,助力云电脑全面替代本地PC。

2025-11-05 09:02:41 126

原创 Android杭研云电脑U盘识别方案

通过“Android OTG U盘 + 文件抽象能力 + 双向安全流 + 云端虚拟盘”设计,可以在不修改底层系统、不需要 root 不侵入 hypervisor 的前提下,实现云电脑端一致、通用、安全、可审计的 U盘访问能力。这项能力,是云电脑真正取代本地 PC 的第一阶段关键里程碑,也能在后续延伸到:扫码枪、IC卡、打印机等统一外设抽象标准层,为云电脑构建真正可量产的政企端点外设能力体系。

2025-11-04 16:16:34 38

原创 Android 杭研云平板移动爱家是否绑定接口

摘要:中国移动杭研项目要求平板未绑定移动账号时不允许切换到平板模式。本文介绍了通过AIDL接口实现该功能的技术方案:1. 定义与杭研底座匹配的IBindCallback和IHjqBind接口;2. 创建HjqBindManager服务管理类实现跨进程通信,包含服务连接、重试机制和状态回调处理;3. 通过HjqBindManagerProxy代理类提供isHjqBinded()方法判断绑定状态。该方案采用标准的Android Binder IPC机制,实现了账号绑定状态的实时检测功能。(148字)

2025-11-04 16:09:48 99

原创 Android 14安装的APK默认允许运行时权限

本文介绍了在Android系统中实现安装应用后自动授予运行时权限的方法。通过在安装完成广播中检测应用安装状态,调用新增的DefaultPermissionGrantPolicy.grantAppRuntimePermissions()函数来授予常规权限,并使用allowSpecialPermission()处理特殊权限(如安装未知应用和悬浮窗权限)。文章详细说明了如何修改DefaultPermissionGrantPolicy类,添加grantAppRuntimePermissions和grantRunti

2025-08-19 11:29:57 396

原创 Android14 预置APK为可卸载恢复出厂设置不可恢复

本文介绍了一种实现APK预置为可卸载但恢复出厂设置不可恢复的方法。由于Google限制了对data分区的直接操作,作者采用在首次开机时静默安装APK的方案。具体实现包括:1)将APK拷贝至system/preloads目录并按包名命名;2)在SystemServer中新增SilentInstallService实现静默安装功能,包含安装状态检测、重试机制和标志位设置;3)在SystemServer启动阶段判断标志位决定是否启动安装服务。该方法通过开机静默安装绕过了系统限制,同时利用标志位确保恢复出厂设置后不

2025-08-19 11:01:35 384

原创 Android14 使用V2签名APK的预置方式

本文介绍了两种预置第三方APK的方法:1)在board.mk中使用copy命令直接复制APK和so库文件到系统目录;2)在Android.mk中配置预编译参数,包括设置证书、JNI库路径等,并添加白名单权限文件。两种方法都需要将APK解压后提取so库到指定目录,并注意处理可能的SeLinux权限冲突。当so库与系统库冲突时,建议将APK预置到product分区而非system分区。

2025-07-28 14:12:58 228

原创 Android 模块编译快速push脚本

本文介绍了一个Windows批处理脚本,用于简化Android开发中的文件推送流程。脚本支持通过ADB将编译后的文件从Ubuntu服务器推送到设备,并集成了清除数据、重启设备、恢复出厂设置等功能。使用条件包括:1)配置ADB环境变量;2)配置aapt工具路径。使用方法是将代码保存为.bat文件,将编译输出的文件/文件夹拖到脚本上运行。脚本会自动解析路径,执行推送操作,并提供交互式菜单选择后续操作。该脚本显著提升了开发效率,尤其适合需要频繁推送修改的模块开发场景。

2025-07-28 11:48:20 176 1

原创 Android14 如何给第三方应用获取wifi mac地址权限

摘要:文章分析了Android系统中获取WiFi MAC地址的权限问题。系统API WifiManager.getFactoryMacAddresses() 会检查调用者UID权限,导致第三方应用无法获取MAC地址。通过修改WifiServiceImpl.java源码,增加了基于PID获取包名的判断机制,允许特定应用(如com.android.demo)绕过权限检查。同时提供了两种第三方应用调用方式:集成framework.jar直接访问或通过反射调用接口。反射调用方法示例展示了如何获取MAC地址并进行格式

2025-07-21 09:39:47 182

原创 Android 各国语言及对应文件夹名称

记录一下Android各国语言所对应的文件夹名称,这个还是比较全的,用了很多年的了,一直保存至今。

2025-07-18 10:02:34 156

原创 Android14 Settings(设置)动态添加菜单

摘要:本文介绍了两种在Android系统设置中添加菜单的方法:修改系统源码或在第三方APK中配置AndroidManifest.xml。重点解析了通过AndroidManifest.xml动态添加菜单的技术方案,包括一级菜单和二级菜单的配置方法。关键要素包括必须设置的intent-filter、exported属性、category值(如com.android.settings.category.ia.homepage)以及图标、标题等元数据。文章还列出了系统预定义的各类别值,开发者可根据需求选择不同分类(

2025-07-18 09:54:09 298

原创 Android14 实现CPU使用率100%且计算CPU负载

本文介绍了一种通过Native代码实现CPU满载测试的方案。该方案通过在后台创建多个高优先级线程,每个线程绑定到不同CPU核心并持续执行空指令循环,从而稳定达到100% CPU负载。核心实现包括:1)使用JNI调用Native方法启动/停止测试;2)通过pthread创建线程并设置CPU亲和性;3)采用实时调度策略提高线程优先级。同时提供了基于/proc/stat的CPU使用率计算方法,通过对比前后时间点的CPU状态数据计算实际负载率。该方案适用于CPU压力测试、系统稳定性验证及散热策略检测等场景,相比纯J

2025-07-17 17:38:28 206 1

原创 Android 14 实现动态设置默认Launcher

Android系统提供了两种动态切换默认Launcher的方法:1.使用RoleManager,通过addRoleHolderAsUser方法传入包名即可切换;2.通过PackageManager的addPreferredActivity方法,需要先获取当前和目标的ResolveInfo,构建IntentFilter并设置组件信息。两种方式都能实现Launcher应用的动态切换,第一种方法更简洁,第二种方法需要处理更多细节。需要注意的是,启动原生Launcher3时需添加HOME类别,否则可能出现异常。

2025-07-17 16:44:21 455

原创 Android14 禁止下拉通知栏和控制中心(禁止下拉状态栏)

某些产品需要禁止下拉状态栏,涉及到的修改类有4个,分别是对应不同的地方。能完全的实现禁止下拉状态栏的功能

2024-11-04 20:35:27 1360

原创 Android14 SystemUI QS tiles如何动态刷新(下拉菜单栏快捷图标如何动态刷新)

下拉菜单快捷图标如何动态刷新,就是我想什么时候什么情况下某一个快捷图标显示在某个地方(如:第一个,第二个等等)或者图标进行重排序等等,总之,就是要实现我想它怎么样显示就怎么样显示。定义默认的快捷图标列表是用string quick_settings_tiles_default所以我们修改默认的QS tile顺序就是在这里修改,如果有overlay的话就在overlay里面去修改那么定义了默认的了,我们要去如何动态刷新呢?

2024-10-22 21:55:17 584 1

原创 Android14 另辟蹊径设置系统的一些默认值(如:WLAN热点名称,WLAN直连名称等)

在Android开发中,客户想要设置比如WIFI热点,密码,WIFI直连名称等默认值,在Android 13以前是很好修改的,但是对于要用GMS服务的话,在Android13 以后很多都被Google给闭源了,比如以Google Mainline的形式发布,就算是它闭源了,我们也总有设置它的办法,所谓条条大路通罗马,所以我们在第一次开机时用代码重新设置一遍值,这样用户也无感,我们也实现了客户的需求,也不会影响GMS的认证,所以我们只需找到设置默认值的代码即可。

2024-10-21 21:03:01 907

原创 Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

2024-10-15 10:55:39 1462 7

原创 Android Studio开发系统APK(引入framework.jar及系统签名)

在开发过程中,我们需要开发一些功能的独立APK,当然某些简单的功能可以依附于Settings或SystemUI等系统有源码的APK,但是一些逻辑功能较为复杂的APK用Android Studio开发就比较的好一点。

2024-10-14 16:59:01 1130

原创 Android 监听电话(通话)状态(二)

telecom中接听挂断电话是有权限的,我们从事系统开发是可以在telecom中新增代码的,现在我就要定义一个服务去实现接听挂断的功能。这里我只提供关键性代码以及思路,具体不懂的可以联系我首先得定义一个服务,在服务中写下列代码接听挂断= null) {return;return;return;然后再在监听电话的地方bindService以及发送消息去执行接听还是挂断的操作@Override@Override= null) {

2024-10-14 11:49:01 752

原创 Android 监听电话(通话)状态(一)

在开发的过程中,常常需要监听电话的状态,比如当用Google拨号时,虽然Google拨号也添加了录音功能,但是对地区有严格的限制,所以这时候我们要实现通话录音功能就只能监听通话的状态了。对于监听来电有多种方式,①继承InCallService ②对于Android12及以上,继承TelephonyCallback 并实现TelephonyCallback.CallStateListener(Android12 以下是继承 PhoneStateListener),③监听通知需要根据应用场景选择不同的方式。

2024-10-11 20:00:57 891

原创 Android14 Launcher抽屉模式对ALL App界面的APP进行排序

有些时候客户会要求把某一个App图标放在第一个位置,通过分析Launcher代码可以得出App界面是通过一个List集合加载的,所以我们只需要给这个集合通过包名的方式进行重新排序即可,把想要的顺序预定义好久OK。

2024-10-10 13:38:47 455

原创 Android14 如何更改无源码应用图标

新建文件frameworks/base/core/res/res/values/symbols_my_icon.xml这里是新建不是直接加在symbols.xml,新建的比较方便,不用修改源码,修改起来很好。

2024-10-10 09:56:58 637

原创 Android 笔记

单编路径为frameworks\base下的 frameworks\base\core\java、frameworks\base\media\java等文件(具体可编译哪些路径可参考frameworks\base\Android.bp)可用 umake/make framework-minus-apex,不可使用mm/mmm,push文件为 /system/framework/framework.jar。一般有Android.bp或者Android.mk的模块都可单编。就先这么多,后续会再添加。

2024-10-10 09:46:55 578

原创 Android TextView跑马灯效果

对于很多时候会有显示不全的问题,也就是会以省略号的形式显示,对于可以有焦点的Textview可以很好实现跑马灯效果,但是无焦点的TextView就不好操作,下面我来解决这个问题。

2024-10-10 09:30:53 1426

原创 Android CarrierConfig如何确定mccmnc所对应哪个文件

CarrierConfig的对应mccmnc文件

2024-10-10 09:03:00 292

原创 Android反编译APK与解析软件包img

JADX相当于是 apktool + dex2jar + jd-gui 的结合体,既能反编译代码也能反编译资源支持的文件有: (apk, dex, jar, class,smali, zip,xapk, aar, arsc, jadx, aab)等。打开之后界面如下,点击打开文件,再选择对应所需要反编译的apk(或者直接拖入apk)等待加载完成之后便可得到如下界面,可以编译出代码,以及资源文件等。若要导出代码则 点击 文件 > 全部保存 即可。

2024-10-09 22:10:22 686

原创 Android14 通过代码授予运行时权限(不改Framework代码)

通过代码的方式的话就不用手动去允许权限,后台默认去操作,用户界面无任何感知。

2024-10-09 21:21:50 965

获取APK包名类名,版本号,签名的小工具

将APK拖入到此exe文件,即可得到如下数据 APK 使用了 v2 签名方案 包 名: com.addie.timesapp 启动类: com.addie.timesapp.ui.SplashActivity targetSdkVersion: 29 minSdkVersion: 19 版本号: 1.8 内部版本号: 9

2025-11-07

Android14 实现CPU使用率100%且计算CPU负载并保存到对应可查看文件中

此方案适合做 CPU 压力测试、性能稳定性检测,或在自定义 ROM 中验证发热、散热策略是否到位。但是此种方案需要系统签名并解决 SeLlnux权限,直接系统签名后即可为第三方apk使用,不集成于系统中。

2025-08-25

Android14 预置APK为可卸载恢复出厂设置不可恢复,静默安装的代码

里面包含了完整的SilentInstallService.java和ThreadPoolManager.java,实现了静默安装,功能包含静默安装,写标志位,检测是否安装成功以及重试机制。

2025-08-19

Android模块编译后快速push 脚本

因为公司的编译服务器数用的Ubuntu,而办公电脑是Windows,是通过xshell连接访问服务器,当然局域网也可以通过Windows的文件管理访问Ubuntu的文件,所以当模块编译后每次push都是通过拖动文件夹到cmd命令窗口中进行push,还得输入root,remount,push命令等,此脚本是Windows批处理脚本。 如果需要正常使用脚本的所有功能则需要满足以下条件: 1,Windows已配置ADB环境变量 2,Windows已配置aapt环境变量,因为push apk文件清除apk数据时需要aapt进行解析(如路径D:\android-sdk-windows\build-tools\28.0.0\ ,下有aapt.exe和aapt2.exe方可)

2025-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除