Android U Settings 应用中 APN 菜单实现的代码逻辑
功能简介
MobileNetwork移动网络设置页面下有【接入点设置】(APN)。
问题:为什么Controller初始化找不到pref,然后报错。
Note:什么时候切换成Controller的呢?在Android T&U 上还没有更新成kt实现 ,但是已经有Controller的方案。
流程逻辑

1、界面“telephony_apn_key” 绑定 “ApnPreferenceController”
<com.android.settingslib.RestrictedPreferenceandroid:key="telephony_apn_key"android:persistent="false"android:title="@string/mobile_network_apn_title"settings:allowDividerAbove="true"settings:keywords="@string/keywords_access_point_names"settings:controller="com.android.settings.network.telephony.ApnPreferenceController"/>
2、加载UI时,“MobileNetworkSettings” -- onAttach -- use(Controller).init(subId)
use(ApnPreferenceController.class).init(mSubId);
就是此处异常,无法创建ApnPreferenceController对象实例。
Note:use是什么逻辑?
关于界面刷新
MobileNetworkSettings类控制着移动网络设置的各个菜单显示逻辑,
onAvailableSubInfoChanged -- MobileNetworkRepository的回调
onSubscriptionDetailChanged -- 更新标题并刷新控件
redrawPreferenceControllers -- 开线程,在主线程更新UI,由父类实现
通过 ThreadUtils.postOnMainThread() 保证在主线程刷新界面,redrawPreferenceControllers 重新绘制/更新屏幕上的菜单控件。
ThreadUtils.postOnMainThread(() -> {renameTitle.accept(getActivity());redrawPreferenceControllers();
});
代码详情
业务代码
mobile_network_settings 布局
packages/apps/Settings/res/xml/mobile_network_settings.xml
定义移动网络界面的菜单控件,以供MobileNetwork渲染使用。
<PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"xmlns:settings="http://schemas.android.com/apk/res-auto"android:key="mobile_network_pref_screen"><PreferenceCategoryandroid:key="enabled_state_container"android:title="@string/summary_placeholder"settings:controller="com.android.settings.network.telephony.DisabledSubscriptionController"android:layout="@layout/preference_category_no_label"><!--We want separate APN setting from reset of settings because we want user to change it with caution--><com.android.settingslib.RestrictedPreferenceandroid:key="telephony_apn_key"android:persistent="false"android:title="@string/mobile_network_apn_title"settings:allowDividerAbove="true"settings:keywords="@string/keywords_access_point_names"settings:controller="com.android.settings.network.telephony.ApnPreferenceController"/></PreferenceCategory></PreferenceScreen>
MobileNetworkSettings 界面加载
packages/apps/Settings/src/com/android/settings/network/telephony/MobileNetworkSettings.java
加载界面菜单控件,并响应多种信息回调更新界面,如注册状态变化时,显示或隐藏某些功能菜单。
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class MobileNetworkSettings extends AbstractMobileNetworkSettings implementsMobileNetworkRepository.MobileNetworkCallback {private static final String LOG_TAG = "NetworkSettings";//界面创建时候初始化各菜单的控制器@Overridepublic void onAttach(Context context) {super.onAttach(context);use(ApnPreferenceControll相关文章:
Android U Settings 应用中 APN 菜单实现的代码逻辑
功能简介 MobileNetwork移动网络设置页面下有【接入点设置】(APN)。 问题:为什么Controller初始化找不到pref,然后报错。 Note:什么时候切换成Controller的呢?在Android T&U 上还没有更新成kt实现 ,但是已经有Controller的方案。 流程逻辑 1、界面“telephony_a…...
java时间处理工具类
效果 最近7天:2024年6月21日-2024年6月27日过去一周、最近一周:2024年6月16日-2024年6月22日过去三个月:2024年3月-2024年6月近半年、过去半年:2023年12月-2024年6月去年:2023年1月-2023年12月过去3年:202…...
Android高级面试_2_IPC相关
Android 高级面试-3:语言相关 1、Java 相关 1.1 缓存相关 问题:LruCache 的原理? 问题:DiskLruCache 的原理? LruCache 用来实现基于内存的缓存,LRU 就是最近最少使用的意思,LruCache 基于L…...
docker封禁对外端口映射
docker比linux防火墙规则优先级要高,一旦在docker里面配置了对外服务端口的话在iptable里面封不掉,需要通过下面的方法进行封禁: 这里我的宿主机IP地址是10.5.1.244,docker 内部网络ip段是默认的172.17段的,以下为命令࿱…...
【leetcode系列】567.字符串的排列(滑动窗口)
题目 给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。 换句话说,s1 的排列之一是 s2 的 子串 。 示例 示例 1: 输入:s1 “ab” s2…...
情感分析方法与实践
第1关:情感分析的基本方法 情感分析简介 情感分析,又称意见挖掘、倾向性分析等。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。在日常生活中,情感分析的应用非常普遍,下面列举几种常见的…...
迁移学习——CycleGAN
CycleGAN 1.导入需要的包2.数据加载(1)to_img 函数(2)数据加载(3)图像转换 3.随机读取图像进行预处理(1)函数参数(2)数据路径(3)读取文…...
【软件测试】对于测试中的bug,我们真正了解了吗?
目录 1.软件测试的生命周期 1.1.软件测试阶段流程 1.2.各流程的任务 2.什么是bug 2.1.bug的概念 2.2.怎么描述bug 2.3.bug的级别 2.4.bug的生命周期 1.软件测试的生命周期 在学习bug前,我们先来学习一下软件测试的生命周期,也就是测试人员进行测…...
Packer-Fuzzer一款好用的前端高效安全扫描工具
★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、Packer Fuzzer介绍 Packer Fuzzer是一款针对Webpack…...
解决卸载TabX explorer软件后导致系统文件资源管理器无法正常使用问题
最近安装了最新版本的鲁大师,安装过程中不小心同时安装了捆绑软件TabX explorer。这个软件和系统自带的文件资源管理器很像,最后弹出会员到期才发现,这个不是系统文件资源管理器,是第三方的文件资源管理器,就按正常流程…...
qt for android 使用打包sqlite数据库文件方法
1.在使用sqlite数据库时,先将数据库文件打包,放置在assets中如下图: 将文件放置下android中的assets下的所有文件都会打包在APK中,可以用7zip查看apk文件 2.在qt代码读取数据文件,注意在assets下的文件都是Read-Only,需…...
MYBATIS大于等于、小于等于的写法
mybatis使用的是xml格式的文件。使用>和<号的时候,会存在与xml的标签的规范冲突。需要写成如下形式,否则会报错。 第一种写法 原符号 替换符号 < < < <> > > >& & &…...
基于堆叠长短期记忆网络 Stacked LSTM 预测A股股票价格走势
前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…...
SpringCloud Alibaba Sentinel基础入门与安装
GitHub地址:https://github.com/alibaba/Sentinel 中文文档:https://sentinelguard.io/zh-cn/docs/introduction.html 下载地址:https://github.com/alibaba/Sentinel/releases Spring Cloud Alibaba 官方说明文档:Spring Clou…...
Arduino IDE下载、安装和配置
文章开始先把我自己网盘里的安装包分享给大家,链接:https://pan.baidu.com/s/1cb2_3m0LnuSKLnWP_YoWPw?pwdwwww 提取码:wwww 里面一个是Arduino IDE的安装包,另一个是即将发布的版本。 第一个安装包打开直接按照我的步骤安装就…...
SOBEL图像边缘检测器的设计
本项目使用FPGA设计出SOBEL图像边缘检测器,通过分析项目在使用过程中的工作原理和相关软硬件设计进行分析详细介绍SOBEL图像边缘检测器的设计。 资料获取可联系wechat 号:comprehensivable 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本…...
Day35:2734. 执行字串操作后的字典序最小字符串
Leetcode 2734. 执行字串操作后的字典序最小字符串 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前…...
【高考志愿】机械工程
目录 一、专业概述 二、学科特点 三、就业前景 四、机械工程学科排名 五、专业选择建议 高考志愿选择机械工程,这是一个需要深思熟虑的决定,因为它不仅关乎未来的学习和职业发展,更是对自我兴趣和潜能的一次重要考量。 一、专业概述 机…...
ffmpeg将mp4转换为swf
文章目录 ffmpeg安装、配置java运行报错 Cannot run program "ffmpeg" ffmpeg命令mp4转为swf示例 ### ffmpeg -i input.mkv -b:v 600 -c:v libx264 -vf scale1920:1080 -crf 10 -ar 48000 -r 24 output.swfmkv转为swf示例 其他文档命令参数简介 需要将mp4转换为swf&a…...
论文学习 --- RL Regret-based Defense in Adversarial Reinforcement Learning
前言 个人拙见,如果我的理解有问题欢迎讨论 (●′ω`●) 原文链接:https://www.ifaamas.org/Proceedings/aamas2024/pdfs/p2633.pdf 研究背景 深度强化学习(Deep Reinforcement Learning, DRL)在复杂和安全关键任务中取得了显著成果,例如自动驾驶。然而,DRL策略容易受…...
OpenClaw 接入微信 / 企业微信完整教程
本文介绍如何通过 OpenClaw 框架,将个人微信和企业微信接入 AI Agent,实现「AI 自动回复」的功能。适用于树莓派、Mac/Windows 电脑、NAS 或云服务器等各类设备。 一、环境准备 1.1 安装 OpenClaw OpenClaw 是核心运行环境,负责加载插件、管…...
如何彻底移除Windows Defender?5步掌握完整安全组件卸载指南
如何彻底移除Windows Defender?5步掌握完整安全组件卸载指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirro…...
从平面到立体:基于OpenLayers与Cesium的无缝地图维度切换实践
1. 二维与三维地图融合的必要性 在现代WebGIS开发中,单纯依赖二维地图已经难以满足用户对空间数据展示的需求。想象一下,当你查看一个城市规划系统时,平面地图能告诉你道路走向,但只有切换到三维视图才能直观看到建筑高度、地形起…...
NeuroSynth脑成像元分析:Python神经影像数据处理终极指南
NeuroSynth脑成像元分析:Python神经影像数据处理终极指南 【免费下载链接】neurosynth Neurosynth core tools 项目地址: https://gitcode.com/gh_mirrors/ne/neurosynth NeuroSynth是一个功能强大的Python包,专门用于大规模功能性神经影像数据的…...
FPGA LVDS输入作为模拟比较器的原理、设计与工程实践
1. 项目概述:当LVDS输入遇上模拟电压 最近几年,各大FPGA厂商都在力推自家的“模拟-数字转换器(ADC)IP核”,宣传其如何集成便利、性能优越。这让我这个老工程师不禁琢磨,这些IP核的底层原理究竟是什么&#…...
数说故事解读AI品牌心智:让品牌被AI看见、推荐与信任
当AI全面进入商业决策、智能体成为企业标配,品牌增长逻辑正在发生底层重构:品牌不再只是面对消费者,更需要被AI识别、理解、推荐与信任。数说故事在2026 D3智慧增长大会上提出全新观点——AI品牌心智,将成为AI共生时代品牌最重要的…...
FreeRTOS CPU使用率统计的坑:为什么你的数据跑了1小时就不准了?
FreeRTOS CPU使用率统计的陷阱与高精度优化方案 当你在嵌入式系统中集成FreeRTOS的CPU使用率统计功能时,可能会遇到一个令人困惑的现象:系统运行约1小时后,统计数值突然出现明显偏差。这不是你的代码出了问题,而是隐藏在32位变量和…...
开源浏览器扩展SubLens:集中管理AI订阅账单,告别遗忘扣费
1. 项目概述:一个浏览器扩展,帮你管好AI订阅账单 不知道你有没有这种感觉,每个月信用卡账单出来的时候,总有几个“熟悉的陌生人”——那些你为了尝鲜或者工作需要而订阅的AI服务,比如ChatGPT Plus、Claude Pro、GitHub…...
西门子S7-300/400跨网段数据交换:DP/DP Coupler模块的Step7组态避坑指南
西门子S7-300/400跨网段数据交换实战:DP/DP Coupler组态深度解析与故障排查 在工业自动化系统中,多套PLC之间的数据交互是常见需求。当这些PLC分布在不同Profibus-DP网络时,西门子DP/DP Coupler模块成为实现跨网段通讯的关键组件。然而&#…...
告别混乱搜索:一文搞懂Quartus前仿真的两种玩法(Modelsim调用 vs VWF内嵌)
Quartus前仿真实战指南:Modelsim与VWF的高效选择策略 从Verilog到可靠仿真的关键跨越 当你完成了一段Verilog代码的编写,那种成就感往往伴随着一个迫切的需求:如何快速验证这段代码的行为是否符合预期?在Quartus开发环境中&#x…...
