Android APN 参数数据库设计和代码实现

Android  U 网页代码:/ - OpenGrok cross reference for / (aospxref.com)

字段参数介绍

实体对象 ApnSetting

ApnSetting.java - OpenGrok cross reference for /frameworks/base/telephony/java/android/telephony/data/ApnSetting.java (aospxref.com)

An Access Point Name (APN) configuration for a carrier data connection.

一个运营商数据连接的接入点名称(APN)配置。

界面Projection

ApnEditor.java - OpenGrok cross reference for /packages/apps/Settings/src/com/android/settings/network/apn/ApnEditor.java (aospxref.com)

客制化开发举例:sourceType字段标记APN来源(预置、服务器下发或用户添加 )

源码实现:ApnEditor.java - OpenGrok cross reference for /packages/apps/Settings/src/com/android/settings/network/apn/ApnEditor.java (aospxref.com)

private static final int SOURCE_TYPE_INDEX = 26;//自定义新增数据库字段索引号// the source type for apn
public static final int SOURCE_TYPE_DEFAULT = 0; // the default configured by apns-config.xml
public static final int SOURCE_TYPE_USER_EDIT = 1; // from user editingprivate int mSourceType = SOURCE_TYPE_DEFAULT;//初始化默认为预置类型/*** Standard projection for the interesting columns of a normal note.*/
private static final String[] sProjection = new String[] {Telephony.Carriers._ID,     // 0Telephony.Carriers.NAME,    // 1Telephony.Carriers.APN,     // 2Telephony.Carriers.PROXY,   // 3Telephony.Carriers.PORT,    // 4Telephony.Carriers.USER,    // 5Telephony.Carriers.SERVER,  // 6Telephony.Carriers.PASSWORD, // 7Telephony.Carriers.MMSC, // 8Telephony.Carriers.MCC, // 9Telephony.Carriers.MNC, // 10Telephony.Carriers.NUMERIC, // 11Telephony.Carriers.MMSPROXY, // 12Telephony.Carriers.MMSPORT, // 13Telephony.Carriers.AUTH_TYPE, // 14Telephony.Carriers.TYPE, // 15Telephony.Carriers.PROTOCOL, // 16Telephony.Carriers.CARRIER_ENABLED, // 17Telephony.Carriers.BEARER, // 18Telephony.Carriers.BEARER_BITMASK, // 19Telephony.Carriers.ROAMING_PROTOCOL, // 20Telephony.Carriers.MVNO_TYPE,   // 21Telephony.Carriers.MVNO_MATCH_DATA,  // 22Telephony.Carriers.EDITED_STATUS,   // 23Telephony.Carriers.USER_EDITABLE,   // 24Telephony.Carriers.CARRIER_ID,       // 25SOURCE_TYPE    //自定义新增字段,MTK inner suppport
};void fillUI(boolean firstTime) {//从数据库更新APN来源类型mSourceType = mApnData.getInteger(SOURCE_TYPE_INDEX);
}

telephony.db字段

开机Android TelephonyProvider会将apns-conf.xml APN配置信息 load到数据库telephony.db名为carrier的表中,可以用SQLite工具可视化。

手机存储目录:data/user_de/0/com.android.providers.telephony,在子文件夹databases

RecNoFieldNameSQLTypeDefaultValue备注
1_idINTEGER
2nameTEXT''必须
3numericTEXT''

=mcc+mnc

4mccTEXT''必须
5mncTEXT''必须
6classTEXT''运营商需求
7apn_sourceINTEGER-1
8modify_apn_name_idINTEGER-1
9carrier_idINTEGER-1
10apnTEXT''必须
11userTEXT''
12serverTEXT''
13passwordTEXT''
14proxyTEXT''
15portTEXT''
16mmsproxyTEXT''
17mmsportTEXT''
18mmscTEXT''
19authtypeINTEGER-1
20typeTEXT''
21currentINTEGER
22sourcetypeINTEGER0
23protocolTEXTIP
24roaming_protocolTEXTIP
25carrier_enabledBOOLEAN1
26bearerINTEGER0
27bearer_bitmaskINTEGER0
28network_type_bitmaskINTEGER0
29lingering_network_type_bitmaskINTEGER0
30mvno_typeTEXT''
31mvno_match_dataTEXT''
32sub_idINTEGER-1指明归属的卡,来源subscription
33profile_idINTEGER0
34modem_cognitiveBOOLEAN0
35max_connsINTEGER0
36wait_timeINTEGER0
37max_conns_timeINTEGER0
38mtuINTEGER0
39mtu_v4INTEGER0
40mtu_v6INTEGER0
41editedINTEGER0
42user_visibleBOOLEAN1
43user_editableBOOLEAN1
44owned_byINTEGER1APN归属者,0或1,基本都是1.
45apn_set_idINTEGER0APN类型集合的id,功能基本都没用到
46skip_464xlatINTEGER-1

464xLAT上层有个开关会设置下去给MD,默认是开的。

参考NetworkAgentConfig.java 介绍:

Set to skip 464xlat. This means the device will treat the network as IPv6-only and

will not attempt to detect a NAT64 via RFC 7050 DNS lookups.

47always_onINTEGER0

相关默认值

在MMS模块有定义proxy port默认值是80(在APN没有配置的情况下),代码实现如下:

ApnSettings.java - OpenGrok cross reference for /packages/services/Mms/src/com/android/mms/service/ApnSettings.java (aospxref.com)

private static ApnSettings getApnSettingsFromCursor(Cursor cursor, String requestId)throws ApnException {// Default proxy port to 80int proxyPort = 80;//...if (!TextUtils.isEmpty(proxyAddress)) {proxyAddress = Inet4AddressUtils.trimAddressZeros(proxyAddress);final String portString =trimWithNullCheck(cursor.getString(COLUMN_MMSPORT));if (!TextUtils.isEmpty(portString)) {try {proxyPort = Integer.parseInt(portString);} catch (NumberFormatException e) {LogUtil.e(requestId, "Invalid port " + portString + ", use 80");}}}return new ApnSettings(mmscUrl, proxyAddress, proxyPort, getDebugText(cursor));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207874.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Attention is All You Need:Transformer各模块详解

Transformer encoder-decoder架构 Encoder:将输入序列转换为一个连续向量空间中的表示。Encoder通常是一个循环神经网络(RNN)或者卷积神经网络(CNN),通过对输入序列中的每个元素进行编码,得到…

腾讯待办导出的文件在哪找?支持打开ics文件的提醒待办工具

您使用过腾讯待办吗?如果您在平常使用的提醒待办工具为腾讯待办,想必近期您打开这款提醒待办工具时会看到提示您及时导出数据的提示。腾讯旗下的腾讯待办应用,应业务发展方向调整将于2023年12月20日全面停止运营并下架该应用。 面对突如其来…

高防服务器的工作原理

在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种…

算法 全排列的应用

#include <iostream> #include <string>using namespace std;// 交换字符串中两个字符的位置 void swap(char& a, char& b) {char temp a;a b;b temp; }void fun(string str) {string a str.substr(0,4); int aa;sscanf(a.c_str(), "%d",…

redis的性能管理、主从复制和哨兵模式

一、redis的性能管理 redis的数据时缓存在内存中的 查看系统内存情况 info memory used_memory:853688 redis中数据占用的内存 used_memory_rss:10522624 redis向操作系统申请的内存 used_memory_peak:853688 redis使用内存的峰值 系统巡检&#xff1a;硬件巡检、数据库 n…

CentOS 7 使用pugixml 库

安装 pugixml Git下载地址&#xff1a;https://github.com/zeux/pugixml 步骤1&#xff1a;首先&#xff0c;你需要下载pugixml 的源代码。你可以从Github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2&#xff1a;下载完成后&#xff0c;需要将源代码解压…

连接k8s和凌鲨

通过连接k8s和凌鲨&#xff0c;可以让研发过程中的重用操作更加方便。 更新容器镜像调整部署规模查看日志运行命令 架构 所有操作通过k8s proxy连接&#xff0c;通过设置namespace label赋予访问权限。只有赋予特定label的namespace才能被访问。 使用步骤 部署k8s proxy 你…

中国最常用的制作报表的软件有哪些?

​随着信息化时代的浪潮席卷而来&#xff0c;报表制作软件已经成为了企业管理中的得力助手。在中国的大地上&#xff0c;有许多优秀的报表制作软件&#xff0c;而本文将为您揭示五位佼佼者&#xff0c;其中更以VeryReport报表软件为首选。 编辑搜图 请点击输入图片描述&#x…

【Qt开发流程】之富文本处理

描述 Scribe框架提供了一组类&#xff0c;用于读取和操作结构化的富文本文档。与Qt中以前的富文本支持不同&#xff0c;新的类集中在QTextDocument类上&#xff0c;而不是原始文本信息。这使开发者能够创建和修改结构化的富文本文档&#xff0c;而不必准备中间标记格式的内容。…

使用Xshell连接云服务器

文章目录 下载Xshell配置云服务器查找外网IP设置云服务器登录密码 配置Xshell登录成功的标志特别注意 下载Xshell 下载地址&#xff1a;https://www.netsarang.com/en/free-for-home-school/ 注&#xff1a;在点击下载之后需要输入用户名和邮箱地址进行验证&#xff0c;验证成…

加速你的自动化测试:3种等待方式!

在自动化测试中&#xff0c;等待是一个重要的技术&#xff0c;用于处理页面加载、元素定位、元素状态改变等延迟问题。 等待能够确保在条件满足后再进行后续操作&#xff0c;提高自动化测试的稳定性以及可靠性。 等待方式&#xff1a;显示等待、隐式等待、线程睡眠 1. 显式等…

Win10系统无法登录Xbox live的四种解决方法

在Win10系统中&#xff0c;用户可以登录Xbox live平台&#xff0c;畅玩自己喜欢的游戏。但是&#xff0c;有用户却遇到了无法登录Xbox live的问题。接下来小编给大家详细介绍四种简单的解决方法&#xff0c;解决后用户在Win10电脑上就能成功登录上Xbox live平台。 Win10系统无法…