apn管理
1、简介:
每个运营商都有特定的一些apn,android 系统怎么识别和管理这些apn,本文将对这个问题做一些讨论和研究。
2、分析
2.1 流程简介
神秘的apn到底是怎么一回事,为什么插一张移动卡就会有China Mobile 的3个apn,这些数据怎么获取的?如下图所示:
流程简介:
1)系统启动的时候会将apns.xml 、apns-conf.xml中定义的运营商的apn加载到数据中去;
2)在系统设置里面会根据当前插入的sim卡去查询sim卡运营商相关的apn,并显示出来。
说明:从流程的第一步可以看出运营商的apn都定义在
apns.xml 、apns-conf.xml这两个xml中,如果要让系统支持某运营商,我们必须添加相应的apn到xml中,否则系统将不会查询到该卡的apn,会影响用户的上网等功能。
2.2涉及的文件
com.android.providers.telephony.TelephonyProvider
etc/apns-conf.xml
/framework/base/core/res/res/apns.xml
com.android.settings.ApnSettings
2.3 加载数据到数据库
加载数据到数据库是在TelephonyProvider中完成的,该类是一个ContentProvider,ContentProvider就不用我在这给大家介绍啦yixia ;
1)首先是创建对应的数据库表,以下是其核心代码:
@Override
public void onCreate(SQLiteDatabase db) {
// Set up the database schema
db.execSQL("CREATE TABLE " + CARRIERS_TABLE +
"(_id INTEGER PRIMARY KEY," +
"name TEXT," +