当前位置: 首页 > news >正文

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天&#xff1a;2024年6月21日-2024年6月27日过去一周、最近一周&#xff1a;2024年6月16日-2024年6月22日过去三个月&#xff1a;2024年3月-2024年6月近半年、过去半年&#xff1a;2023年12月-2024年6月去年&#xff1a;2023年1月-2023年12月过去3年&#xff1a;202…...

Android高级面试_2_IPC相关

Android 高级面试-3&#xff1a;语言相关 1、Java 相关 1.1 缓存相关 问题&#xff1a;LruCache 的原理&#xff1f; 问题&#xff1a;DiskLruCache 的原理&#xff1f; LruCache 用来实现基于内存的缓存&#xff0c;LRU 就是最近最少使用的意思&#xff0c;LruCache 基于L…...

docker封禁对外端口映射

docker比linux防火墙规则优先级要高&#xff0c;一旦在docker里面配置了对外服务端口的话在iptable里面封不掉&#xff0c;需要通过下面的方法进行封禁&#xff1a; 这里我的宿主机IP地址是10.5.1.244,docker 内部网络ip段是默认的172.17段的&#xff0c;以下为命令&#xff1…...

【leetcode系列】567.字符串的排列(滑动窗口)

题目 给你两个字符串 s1 和 s2 &#xff0c;写一个函数来判断 s2 是否包含 s1 的排列。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 换句话说&#xff0c;s1 的排列之一是 s2 的 子串 。 示例 示例 1&#xff1a; 输入&#xff1a;s1 “ab” s2…...

情感分析方法与实践

第1关&#xff1a;情感分析的基本方法 情感分析简介 情感分析&#xff0c;又称意见挖掘、倾向性分析等。简单而言&#xff0c;是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。在日常生活中&#xff0c;情感分析的应用非常普遍&#xff0c;下面列举几种常见的…...

迁移学习——CycleGAN

CycleGAN 1.导入需要的包2.数据加载&#xff08;1&#xff09;to_img 函数&#xff08;2&#xff09;数据加载&#xff08;3&#xff09;图像转换 3.随机读取图像进行预处理&#xff08;1&#xff09;函数参数&#xff08;2&#xff09;数据路径&#xff08;3&#xff09;读取文…...

【软件测试】对于测试中的bug,我们真正了解了吗?

目录 1.软件测试的生命周期 1.1.软件测试阶段流程 1.2.各流程的任务 2.什么是bug 2.1.bug的概念 2.2.怎么描述bug 2.3.bug的级别 2.4.bug的生命周期 1.软件测试的生命周期 在学习bug前&#xff0c;我们先来学习一下软件测试的生命周期&#xff0c;也就是测试人员进行测…...

Packer-Fuzzer一款好用的前端高效安全扫描工具

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、Packer Fuzzer介绍 Packer Fuzzer是一款针对Webpack…...

解决卸载TabX explorer软件后导致系统文件资源管理器无法正常使用问题

最近安装了最新版本的鲁大师&#xff0c;安装过程中不小心同时安装了捆绑软件TabX explorer。这个软件和系统自带的文件资源管理器很像&#xff0c;最后弹出会员到期才发现&#xff0c;这个不是系统文件资源管理器&#xff0c;是第三方的文件资源管理器&#xff0c;就按正常流程…...

qt for android 使用打包sqlite数据库文件方法

1.在使用sqlite数据库时&#xff0c;先将数据库文件打包&#xff0c;放置在assets中如下图: 将文件放置下android中的assets下的所有文件都会打包在APK中&#xff0c;可以用7zip查看apk文件 2.在qt代码读取数据文件&#xff0c;注意在assets下的文件都是Read-Only&#xff0c;需…...

MYBATIS大于等于、小于等于的写法

mybatis使用的是xml格式的文件。使用>和<号的时候&#xff0c;会存在与xml的标签的规范冲突。需要写成如下形式&#xff0c;否则会报错。 第一种写法 原符号 替换符号 < < < <> > > >& &amp; &…...

基于堆叠长短期记忆网络 Stacked LSTM 预测A股股票价格走势

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…...

SpringCloud Alibaba Sentinel基础入门与安装

GitHub地址&#xff1a;https://github.com/alibaba/Sentinel 中文文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html 下载地址&#xff1a;https://github.com/alibaba/Sentinel/releases Spring Cloud Alibaba 官方说明文档&#xff1a;Spring Clou…...

Arduino IDE下载、安装和配置

文章开始先把我自己网盘里的安装包分享给大家&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1cb2_3m0LnuSKLnWP_YoWPw?pwdwwww 提取码&#xff1a;wwww 里面一个是Arduino IDE的安装包&#xff0c;另一个是即将发布的版本。 第一个安装包打开直接按照我的步骤安装就…...

SOBEL图像边缘检测器的设计

本项目使用FPGA设计出SOBEL图像边缘检测器&#xff0c;通过分析项目在使用过程中的工作原理和相关软硬件设计进行分析详细介绍SOBEL图像边缘检测器的设计。 资料获取可联系wechat 号&#xff1a;comprehensivable 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本…...

Day35:2734. 执行字串操作后的字典序最小字符串

Leetcode 2734. 执行字串操作后的字典序最小字符串 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中&#xff0c;你可以完成以下行为&#xff1a; 选择 s 的任一非空子字符串&#xff0c;可能是整个字符串&#xff0c;接着将字符串中的每一个字符替换为英文字母表中的前…...

【高考志愿】机械工程

目录 一、专业概述 二、学科特点 三、就业前景 四、机械工程学科排名 五、专业选择建议 高考志愿选择机械工程&#xff0c;这是一个需要深思熟虑的决定&#xff0c;因为它不仅关乎未来的学习和职业发展&#xff0c;更是对自我兴趣和潜能的一次重要考量。 一、专业概述 机…...

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策略容易受…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

深入理解 React 样式方案

React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...

el-amap-bezier-curve运用及线弧度设置

文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 ‌el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。‌ 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...