提示: 偏向于对系统设置进行定制的默认修改
这里以MTK平台 Android13 版本为例说明
文章目录
- 前言-需求
- 一、参考资料
- 二、修改文件
- 三、功能实现
-
- [1、设置-关于-型号:修改为 客需值 - KS-320MKS](#1、设置-关于-型号:修改为 客需值 - KS-320MKS)
-
- 实现方案
- 修改思路
-
- 关于设备页面-MyDeviceInfoFragment
- [通过布局文件my_device_info 找到 型号控制器-HardwareInfoPreferenceController](#通过布局文件my_device_info 找到 型号控制器-HardwareInfoPreferenceController)
- [在控制器HardwareInfoPreferenceController 中 修改 getSummary 值-实现自定义型号值](#在控制器HardwareInfoPreferenceController 中 修改 getSummary 值-实现自定义型号值)
- [2、设置-关于-"Android版本-12"改为"系统版本-OpenHarmony 3.1"](#2、设置-关于-“Android版本-12”改为“系统版本-OpenHarmony 3.1”)
-
- 实现方案
- 修改思路
-
- [通过布局文件my_device_info 找到 Android版本-系统版本 -FirmwareVersionPreferenceController](#通过布局文件my_device_info 找到 Android版本-系统版本 -FirmwareVersionPreferenceController)
- Android版本改为系统版本
- 总结
前言-需求
在Android ROM 定制化过程中,有对设置-关于 部分内容做定制化显示,比如如下:
- 设置-关于-型号:修改为 KS-320MKS
- 设置-关于-
Android版本-12改为系统版本-OpenHarmony 3.1
这个需求就是非常非常常见的普通需求,这里最核心的知识点是 知道方法,说直接点如何查看源码-定位修改位置-进行修改源码从而需求实现
一、参考资料
这里给出设置中常见需求,方便有实现需求的一个思路
Android 系统设置中去掉备份菜单
MTK-删除设置首页菜单项
Framework 层屏蔽自动调节亮度
WIFI密码默认显示
无障碍服务屏蔽_关闭无障碍服务快捷方式
给出这些参考资料 仅仅提供解决解决需求思路,下面会具体讲解实现方案。
二、修改文件
java
\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\HardwareInfoPreferenceController.java
\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\firmwareversion\FirmwareVersionPreferenceController.java
\vendor\mediatek\proprietary\packages\apps\MtkSettings\res\values-zh-rCN\strings.xml
\vendor\mediatek\proprietary\packages\apps\MtkSettings\res\values\strings.xml
三、功能实现
1、设置-关于-型号:修改为 客需值 - KS-320MKS
实现方案
修改文件:\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\HardwareInfoPreferenceController.java
修改内容:在 getSummary() 方法中,return 客需值
java
@Override
public CharSequence getSummary() {
/// M: Add for operator customization.
// return mExt.customeModelInfo(getDeviceModel());
return "KS-320MKS";
}
修改思路
关于设备页面-MyDeviceInfoFragment
进入界面,查看日志打印:Switching to fragment com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment


通过布局文件my_device_info 找到 型号控制器-HardwareInfoPreferenceController
找到对应的布局文件:my_device_info

根据布局文件my_device_info 找对应控制器 HardwareInfoPreferenceController

在控制器HardwareInfoPreferenceController 中 修改 getSummary 值-实现自定义型号值
java
@Override
public CharSequence getSummary() {
/// M: Add for operator customization.
// return mExt.customeModelInfo(getDeviceModel());
return "KS-320MKS";
}
2、设置-关于-"Android版本-12"改为"系统版本-OpenHarmony 3.1"
实现方案
文件路径:\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\firmwareversion\FirmwareVersionPreferenceController.java
- 修改点一:在
getSummary方法中,直接返回 客需修改值
java
@Override
public CharSequence getSummary() {
// return Build.VERSION.RELEASE_OR_CODENAME;
return "OpenHarmony 3.1";
}
- 修改点二:在 配置字符串文件中,直接修改
firmware_version字符串值为客需修改值
路径:\vendor\mediatek\proprietary\packages\apps\MtkSettings\res\values-zh-rCN\strings.xml和\vendor\mediatek\proprietary\packages\apps\MtkSettings\res\values\strings.xml
java
<string name="firmware_version" msgid="1606901586501447275">"系统版本"</string>
修改思路
通过布局文件my_device_info 找到 Android版本-系统版本 -FirmwareVersionPreferenceController
如上已经分析了思路,这里直接在相同的布局 my_device_info 中查找控制器


Android版本改为系统版本
继续回到布局文件 my_device_info.xml
java
<!-- Android version -->
<Preference
android:key="firmware_version"
android:order="42"
android:title="@string/firmware_version"
android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionSettings"
settings:controller="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController"/>
那么更改标题不就直接去更改 android:title="@string/firmware_version" 值 不就行了嘛。
所以,找到资源文件 根据语言需要,修改即可:
路径:\vendor\mediatek\proprietary\packages\apps\MtkSettings\res\values-zh-rCN\strings.xml 和 \vendor\mediatek\proprietary\packages\apps\MtkSettings\res\values\strings.xml
java
<string name="firmware_version" msgid="1606901586501447275">"系统版本"</string>
总结
- 这些是常见的客需需求,一定要掌握,这里做一个笔记
- 对于 解决设置相关问题:新增、修改、删除 记录、值、标题等,需要掌握基本方法,定位哪个类,是怎么实现的
- 强烈建议多从源码角度去查看源码,跟踪源码。实际开发中经常借鉴别人的修改方法,发现无法实现,可能某个细节没注意或者并不能够在你的平台、Android版本上面实现,那么就查阅一下源码,针对性解决。