Android 11.0 长按按键切换SIM卡默认移动数据
Android 11.0 长按按键切换SIM卡默认移动数据
近来收到客户需求想要通过长按按键实现切换SIM卡默认移动数据的功能,该功能主要通过长按按键发送广播来实现,具体修改参照如下:
首先创建广播,具体修改参照如下:
/vendor/mediatek/proprietary/packages/apps/MtkSettings/AndroidManifest.xml
+ <receiver
+ android:name=".sim.SimReceiver">
+ <intent-filter>
+ <action android:name="android.intent.action.sim.longpress" />
+ </intent-filter>
+ </receiver>
其次合入具体功能实现的SimReceiver.java文件:
/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/sim/SimReceiver.java
package com.android.settings.sim;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.RingtoneManager;
import android.net.Uri;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;
import java.util.List;public class SimReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals("android.intent.action.sim.longpress")) {SubscriptionManager subscriptionManager = SubscriptionManager.from(context);List<SubscriptionInfo> subscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();if (subscriptionInfoList != null && subscriptionInfoList.size() > 1) {int subId1 = subscriptionInfoList.get(0).getSubscriptionId();int subId2 = subscriptionInfoList.get(1).getSubscriptionId();if (SubscriptionManager.getDefaultDataSubscriptionId() == subId1){subscriptionManager.setDefaultDataSubId(subId2);} else if (SubscriptionManager.getDefaultDataSubscriptionId() == subId2){subscriptionManager.setDefaultDataSubId(subId1);}}}}
}
然后配置对应按键长按发送广播,具体修改参照如下:
/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+ case KeyEvent.KEYCODE: {
+ if (down) {
+ Handler mHandler = new Handler();
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ sendBC("android.intent.action.sim.longpress");
+ }
+ }, 2 * 1000);
+ }+ private void sendBC(String action) {
+ Intent intent = new Intent();
+ intent.setAction(action);
+ intent.addFlags(0x01000000);
+ mContext.sendBroadcast(intent);
+ }
最后注册接收广播:
/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/sim/SimDialogActivity.java
+import android.content.IntentFilter;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);showOrUpdateDialog();
+ SimReceiver aSimReceiver = new SimReceiver();
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction("android.intent.action.sim.longpress");
+ registerReceiver(aSimReceiver ,intentFilter);}
重新编译验证,修改生效,已实现通过长按按键切换SIM卡默认移动数据功能
相关文章:
Android 11.0 长按按键切换SIM卡默认移动数据
Android 11.0 长按按键切换SIM卡默认移动数据 近来收到客户需求想要通过长按按键实现切换SIM卡默认移动数据的功能,该功能主要通过长按按键发送广播来实现,具体修改参照如下: 首先创建广播,具体修改参照如下: /vend…...
Kafka集群调优+能力探底
一、前言 我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐;4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另外,一般…...
netcore swagger 错误 Failed to load API definition
后端接口报错如下: 前端nswag报错如下: 根据网上查询到的资料说明,说一般swagger这种错误都是控制器里有接口代码异常造成的,通常是接口没有加属性Attribute, 比如[HttpPost("Delete")]、[HttpGet("Del…...
UDP Socket API 的讲解,以及回显服务器客户端的实现
文章目录 UDPDatagramSocktet APIDatagramPacket API UDP 客户端服务器实现 UDP 先来认识一下 UDP 的 socket api,两个核心的类:DatagramSocket、DatagramPacket. DatagramSocktet API 是一个 socket 对象。 什么是 socket? 操作系统&…...
数据结构与算法-D7栈实现及应用
顺序栈 具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top完成操作 sqstack.h stack_creat stack_push stack_empty stack_full 1、判断栈是否为空 2、top--,取:data[top1] stack_top stack_clear stack_fre…...
蓝桥杯真题:分巧克力(二分法)-Java版
由题目可知,该题的最终结果具有单调性,边长越大,可分蛋糕越少 可以用二分模板的向右找: 整数二分 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int n,k; //n个块蛋糕,k个学生static int N 10…...
c++面试题
1.static的使用 1)修饰局部变量:在函数内部使用static修饰局部变量,会使它成为静态局部变量。静态局部变量只会被初始化一次,且只有在第一次调用该函数时才会被初始化,之后每次调用该函数时都会保留上一次的值.从原来…...
高精度加法,减法,乘法,除法(上)(C语言)
前言 加,减,乘,除这些运算我们自然信手捏来,就拿加法来说,我们要用c语言编程算ab的和,只需让sum ab即可,可是这是局限的,我们都知道int的表示的最大值为2147483647(32位…...
C++新经典模板与泛型编程:SFINAE特性的信息萃取
用成员函数重载实现is_default_constructible 首先介绍一个C标准库提供的可变参类模板std::is_default_constructible。这个类模板的主要功能是判断一个类的对象是否能被默认构造(所谓默认构造,就是构造一个类对象时,不需要给该类的构造函数…...
java单人聊天
服务端 package 单人聊天;import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import…...
nodejs环境安装
node安装 wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v20.8.0/node-v20.8.0-linux-x64.tar.gz tar xf node-v20.8.0-linux-x64.tar.xz -C /usr/local/ ln -s node-v20.8.0-linux-x64 nodevim /etc/profile.d/node.sh export PATH$PATH:/usr/local/node/binnp…...
R语言进行正态分布检验
查了很多资料,还是比较模糊 Kolmogorov-Smirnov检验(K-S检验)广泛用于正态性检验和其他分布的拟合检验。适用于中等到大样本。 Lilliefors检验是K-S检验的一种变体,专门为小样本设计。其通过使用更准确的临界值来提高对小样本的适…...
什么是SPA(Single Page Application)?它的优点和缺点是什么?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
由于找不到xinput1_3.dll,无法继续执行代码的多种解决方法指南,xinput1_3.dll文件修复
当玩家或用户在启动某些游戏和应用程序时,可能会遭遇到一个系统错误提示:“由于找不到xinput1_3.dll,无法继续执行代码l”。这种情况通常指出系统中DirectX组件存在问题。以下我们将介绍几种常用的解决方法,并提供详细的操作步骤。 一.找不到…...
Vue---Echarts
项目需要用echarts来做数据展示,现记录vue3引入并使用echarts的过程。 1. 使用步骤 安装 ECharts:使用 npm 或 yarn 等包管理工具安装 ECharts。 npm install echarts 在 Vue 组件中引入 ECharts:在需要使用图表的 Vue 组件中,引入…...
uni-app实现返回刷新上一页
方案一 通过监听器实现 page1 uni.$on("refresh", function(data) {if(data.page "page2") {this.reload()} })page2 methods: {handleBack() {uni.$emit("refresh", {page: "page2"})uni.navigateBack()} }方案二 通过页面实例实…...
centos服务器安装docker和Rabbitmq
centos服务器 一 centos安装docker1 安装docker所需要的依赖包2配置yum源3查看仓库中所有的docker版本4安装docker5 设置docker为开机自启6验证docker是否安装成功 二 使用docker安装RabbitMQ拉取RabbitMQ镜像创建并运行容器 一 centos安装docker 1 安装docker所需要的依赖包 …...
【Redis】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)
目录 Redis的慢查询 慢查询配置 慢查询操作命令 慢查询建议 Pipeline 事务 Redis的事务原理 Redis的watch命令 Pipeline和事务的区别 Lua Lua入门 安装Lua Lua基本语法 注释 标示符 关键词 全局变量 Lua中的数据类型 Lua 中的函数 Lua 变量 Lua中的控制语句…...
【pytorch】深度学习入门一:pytorch的安装与配置(Windows版)
请支持原创,认准DannisTang(tangweixuan1995foxmail.com) 文章目录 第〇章 阅读前提示第一章 准备工作第一节 Python下载第二节 Python安装第三节 Python配置第四节 Pycharm下载第五节 Pycharm安装第六节 CUDA的安装 第二章 Anaconda安装与配…...
安装postgresql驱动及python使用pyodbc指定postgresql驱动调用postgresql
注:Python解释器版本(32位/64位)和postgresql驱动版本(32位/64位)需一致。 一、安装postgresql驱动 https://www.postgresql.org/ftp/odbc/versions/msi/ (1)32位: (2)64位: 双击安装。全程默…...
别再只会看原理图了!用Multisim仿真带你深入理解运放的“虚短虚断”与反馈
用Multisim仿真破解运放"虚短虚断"的底层逻辑 在电子电路设计中,运算放大器就像一位沉默的魔术师,用"虚短"和"虚断"两个基本概念演绎着各种精妙的信号处理戏法。但很多工程师在学习阶段只是机械记忆这两个术语,…...
FactoryBluePrints:颠覆性全流程工厂自动化解决方案
FactoryBluePrints:颠覆性全流程工厂自动化解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是戴森球计划的开源蓝图仓库,…...
重塑机械键盘体验:ZMK固件的革新之旅与实践指南
重塑机械键盘体验:ZMK固件的革新之旅与实践指南 【免费下载链接】zmk ZMK Firmware Repository 项目地址: https://gitcode.com/gh_mirrors/zm/zmk 在机械键盘的世界里,固件如同键盘的灵魂,决定着它的响应速度、功能拓展性和个性化程度…...
PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧
PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧 1. 引言:为什么公式检测这么重要? 在文档数字化处理过程中,数学公式的准确检测一直是个技术难点。传统的OCR系统往往把公式误判为普通文本或图像&…...
Hunyuan-MT-7B与SpringBoot整合实战:企业级翻译服务开发
Hunyuan-MT-7B与SpringBoot整合实战:企业级翻译服务开发 1. 引言 在全球化业务快速发展的今天,企业经常需要处理多语言内容。传统翻译方案要么成本高昂,要么响应速度慢,很难满足实时业务需求。腾讯开源的Hunyuan-MT-7B翻译模型&…...
Qwen3-TTS-Tokenizer-12Hz快速上手:Web界面一键处理音频文件
Qwen3-TTS-Tokenizer-12Hz快速上手:Web界面一键处理音频文件 1. 为什么选择Qwen3-TTS-Tokenizer-12Hz? 想象一下,你正在开发一个语音社交应用,用户上传的音频文件体积大、传输慢,服务器存储成本居高不下。传统压缩算…...
用Python+Simulink复现数维杯A题:手把手教你搭建车辆主动减振模型(附代码)
PythonSimulink实战:从零构建车辆主动减振系统 1. 理解车辆振动控制的核心问题 车辆振动问题一直是工程领域的重要挑战。想象一下,当你驾驶一辆重型卡车经过颠簸路面时,那种令人不适的震动不仅影响驾驶体验,长期来看还会对车辆结构…...
douyin-downloader:3大核心能力破解抖音内容高效下载难题
douyin-downloader:3大核心能力破解抖音内容高效下载难题 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...
厦门选117E还是120E?手把手教你为你的城市选择正确的高斯克吕格投影坐标系
厦门GIS项目实战:如何精准选择高斯克吕格投影坐标系 第一次在ArcGIS里看到上百个坐标系选项时,我的鼠标指针在列表上方徘徊了整整十五分钟——就像站在自动售货机前不知道按哪个按钮的新手。特别是当项目 deadline 临近,而厦门市规划局的Shap…...
半导体器件入门:金半接触的5个关键概念解析(附手稿能带图)
半导体器件入门:金半接触的5个关键概念解析(附手稿能带图) 第一次翻开半导体物理教材时,金半接触那一章总是让人既兴奋又困惑。那些弯曲的能带图、费米能级的移动、神秘的势垒高度,就像一道通往微电子世界的大门。本文…...
