Users can go to Settings-->Wireless control-->Mobile networks-->Access point names to view and edit existing APNs.
Google Android uses a SQLite data table to store all APNs configured on the device, as shown below:
Database: /data/data/com.android.providers.telephony/databases/telephony.db
Table: carriers
URI: content://telephony/carriers
frameworks/base/core/res/res/xml/apns.xml // Android自带的内部APN配置文件
system/etc/apns-conf.xml // 第三方提供的APN配置
在编译该product时会将device/generic/goldfish/data/etc/apns-conf.xml文件拷贝到system/etc/目录下,最后打包到system.img中。
packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java // 初始化操作
com.android.providers.telephony.TelephonyProvider.DatabaseHelper.onCreate(SQLiteDatabase) // 创建数据表carriers,用来保存apn配置信息
com.android.providers.telephony.TelephonyProvider.DatabaseHelper.initDatabase(SQLiteDatabase) // 从指定路径读取apn配置文件
com.android.providers.telephony.TelephonyProvider.DatabaseHelper.loadApns(SQLiteDatabase, XmlPullParser) // Loads apns from xml file into the database
settings中对apn的操作:
packages/apps/Settings/src/com/android/settings/ApnEditor.java
packages/apps/Settings/src/com/android/settings/ApnPreference.java
packages/apps/Settings/src/com/android/settings/ApnSettings.java
参考:
本文详细介绍了Android系统中接入点名称(APN)的配置方式与存储机制。包括APN配置文件的位置、数据库表结构及如何通过设置应用进行查看与编辑。
1万+

被折叠的 条评论
为什么被折叠?



