Settings > More > Mobile networks > Access Point Names

在此选项中, 我手中的平台,目前是没有任何选项显示的.

代码:

packages/apps/Settings/src/com/android/settings/ApnSettings.java

//以下代码用于构建一个列表, 从数据库中读取数据并填充到表中.

//注意下面的代码有一些过滤条件

private void fillList() {

String where = "numeric=\""

+ android.os.SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, "")

+ "\"";

String operatorDongle = SystemProperties.get("gsm.dongle.operator");

Log.d(TAG,"fillList:operatorDongle:"+operatorDongle);

if(operatorDongle != null) {

if(!operatorDongle.equals("llll") && false)

where = "numeric=\""+operatorDongle+"\"";

}

//从数据库获取, 下面代码会说明数据库是如何创建及始化的.

Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, new String[] {

"_id", "name", "apn", "type"}, null, null,

Telephony.Carriers.DEFAULT_SORT_ORDER);

PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list");

apnList.removeAll();

ArrayList mmsApnList = new ArrayList();

mSelectedKey = getSelectedApnKey();

cursor.moveToFirst();

while (!cursor.isAfterLast()) {

String name = cursor.getString(NAME_INDEX);

String apn = cursor.getString(APN_INDEX);

String key = cursor.getString(ID_INDEX);

String type = cursor.getString(TYPES_INDEX);

ApnPreference pref = new ApnPreference(this);

pref.setKey(key);

pref.setTitle(name);

pref.setSummary(apn);

pref.setPersistent(false);

pref.setOnPreferenceChangeListener(this);

boolean selectable = ((type == null) || !type.equals("mms"));

pref.setSelectable(selectable);

if (selectable) {

if ((mSelectedKey != null) && mSelectedKey.equals(key)) {

pref.setChecked();

}

apnList.addPreference(pref);

} else {

mmsApnList.add(pref);

}

cursor.moveToNext();

}

cursor.close();

for (Preference preference : mmsApnList) {

apnList.addPreference(preference);

}

}

数据库创建:

packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java

private static class DatabaseHelper extends SQLiteOpenHelper {

// Context to access resources with

private Context mContext;

/**

* DatabaseHelper helper class for loading apns into a database.

*

* @param context of the user.

*/

public DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, getVersion(context));

mContext = context;

}

private static int getVersion(Context context) {

// Get the database version, combining a static schema version and the XML version

Resources r = context.getResources();

XmlResourceParser parser = r.getXml(com.android.internal.R.xml.apns);

try {

XmlUtils.beginDocument(parser, "apns");

int publicversion = Integer.parseInt(parser.getAttributeValue(null, "version"));

return DATABASE_VERSION | publicversion;

} catch (Exception e) {

Log.e(TAG, "Can't get version of APN database", e);

return DATABASE_VERSION;

} finally {

parser.close();

}

}

@Override

public void onCreate(SQLiteDatabase db) {

// Set up the database schema

db.execSQL("CREATE TABLE " + CARRIERS_TABLE +

"(_id INTEGER PRIMARY KEY," +

"name TEXT," +

"numeric TEXT," +

"mcc TEXT," +

"mnc TEXT," +

"apn TEXT," +

"user TEXT," +

"server TEXT," +

"password TEXT," +

"proxy TEXT," +

"port TEXT," +

"mmsproxy TEXT," +

"mmsport TEXT," +

"mmsc TEXT," +

"authtype INTEGER," +

"type TEXT," +

"current INTEGER," +

"protocol TEXT," +

"roaming_protocol TEXT," +

"carrier_enabled BOOLEAN," +

"bearer INTEGER);");

initDatabase(db);//创建后,初始数据

}

private void initDatabase(SQLiteDatabase db) {

// Read internal APNS data

Resources r = mContext.getResources();

XmlResourceParser parser = r.getXml(com.android.internal.R.xml.apns);//从frameworks/base/core/res/中获取XML并添加到数据库中.

int publicversion = -1;

try {

XmlUtils.beginDocument(parser, "apns");

publicversion = Integer.parseInt(parser.getAttributeValue(null, "version"));

loadApns(db, parser);

} catch (Exception e) {

Log.e(TAG, "Got exception while loading APN database.", e);

} finally {

parser.close();

}

// Read external APNS data (partner-provided)

XmlPullParser confparser = null;

// Environment.getRootDirectory() is a fancy way of saying ANDROID_ROOT or "/system".

File confFile = new File(Environment.getRootDirectory(), PARTNER_APNS_PATH);//从/etc/apns-conf.xml中获取并添加到数据库中.

FileReader confreader = null;

try {

confreader = new FileReader(confFile);

confparser = Xml.newPullParser();

confparser.setInput(confreader);

XmlUtils.beginDocument(confparser, "apns");

// Sanity check. Force internal version and confidential versions to agree

int confversion = Integer.parseInt(confparser.getAttributeValue(null, "version"));

if (publicversion != confversion) {

throw new IllegalStateException("Internal APNS file version doesn't match "

+ confFile.getAbsolutePath());

}

loadApns(db, confparser);

} catch (FileNotFoundException e) {

// It's ok if the file isn't found. It means there isn't a confidential file

// Log.e(TAG, "File not found: '" + confFile.getAbsolutePath() + "'");

} catch (Exception e) {

Log.e(TAG, "Exception while parsing '" + confFile.getAbsolutePath() + "'", e);

} finally {

try { if (confreader != null) confreader.close(); } catch (IOException e) { }

}

}

所以, 一般默认的APN有两个地方可添加:

1. frameworks/base/core/res/res/xml/apns.xml

2. RK平台中,采用此路径:

device/rockchip/common/phone/etc/apns-full-conf.xml

XML的内容如下:

to:

mcc="240"

mnc="08"

apn="sp-services"

proxy="172.030.253.241"

port="8799"

mmsc="http://mms"

mmsproxy="172.30.253.241"

mmsport="8799"

type="default" />

mcc="293"

mnc="64"

apn="internet.t-2.net"

type="default,supl" />

mcc="293"

mnc="64"

apn="mms.t-2.net"

mmsc="http://www.mms.t-2.net:8002/"

mmsproxy="172.20.18.137"

mmsport="8080"

type="mms" />

mcc="218"

mnc="03"

apn="mms.eronet.ba"

user=""

server=""

password=""

mmsc="http://mms.gprs.eronet.ba/mms/wapenc"

mmsproxy="010.012.003.011"

mmsport="8080"

type="mms"/>

mcc="425"

mnc="01"

apn="internet"

type="default" />

mcc="425"

mnc="01"

apn="wap.orange.co.il"

mmsc="http://192.168.220.15/servlets/mms"

mmsport="8080"

type="mms" />

mcc="425"

mnc="01"

apn="Internet"

username="Internet"

password="Internet"

type="default" />

mcc="502"

mnc="19"

apn="celcom3g"

type="default,supl" />

mcc="502"

mnc="19"

apn="celcom3g"

user="mms"

password="mms"

mmsc="http://mms.celcom.net.my"

mmsproxy="10.128.1.242"

mmsport="8080"

type="mms" />

mcc="226"

mnc="03"

apn="wnw"

user="wnw"

password="wnw"

proxy="10.252.1.62"

port="8080"

type="default,supl" />

mcc="525"

mnc="03"

apn="miworld"

user="65"

password="user123"

mmsc="http://mmsgw:8002"

mmsproxy="172.16.14.10"

mmsport="8080"

authenticationtype="PAP"

type="mms" />

mcc="525"

mnc="03"

apn="sunsurf"

type="default,supl,mms" />

mcc="734"

mnc="02"

apn="gprsweb.digitel.ve"

mmsc="http://expresate.digitel.ve"

mmsproxy="213.026.205.001"

mmsport="8080"

type="default,supl,mms" />

mcc="262"

mnc="03"

apn="internet.eplus.de"

user="eplus"

password="gprs"

type="default,supl" />

mcc="262"

mnc="03"

apn="mms.eplus.de"

user="blau"

password="blau"

mmsc="http://mms/eplus"

mmsproxy="212.23.97.153"

mmsport="5080" type="mms" />

mcc="220"

mnc="03"

apn="gprswap"

user="mts"

password="064"

proxy="172.017.088.198"

port="8080"

type="default" />

mcc="220"

mnc="03"

apn="mms"

user="mts"

password="064"

mmsc="http://mms.mts064.telekom.rs/mms/wapenc"

mmsproxy="172.017.085.131"

mmsport="8080"

type="mms" />

mcc="234"

mnc="01"

apn="prepay.tesco-mobile.com"

user="tescowap"

password="password"

server="http://wap.tesco-mobile.com/"

proxy="193.113.200.195"

port="9201"

type="default,supl,mms" />

mcc="502"

mnc="13"

apn="celcom"

type="default,supl" />

mcc="502"

mnc="13"

apn="celcom3g"

user="mms"

password="mms"

mmsc="http://mms.celcom.net.my"

mmsproxy="10.128.1.242"

mmsport="8080"

type="mms" />

mcc="310"

mnc="450"

apn="internet.vedge.com"

user=""

password=""

server=""

proxy="10.168.3.23"

port="9401"

type="default" />

mcc="310"

mnc="450"

apn="mms"

user=""

password=""

server=""

mmsc="http://mms.viaero.com"

mmsproxy="10.168.3.23"

port="9401"

typ="mms" />

mcc="502"

mnc="13"

apn="celcom"

type="default,supl" />

mcc="502"

mnc="13"

apn="celcom3g"

user="mms"

password="mms"

mmsc="http://mms.celcom.net.my"

mmsproxy="10.128.1.242"

mmsport="8080"

type="mms" />

mcc="714"

mnc="01"

apn="apn02.cwpanama.com.pa"

mmsc="http://mms.zonamovil.com.pa:80/i.bin"

mmsproxy="172.25.3.5"

port="8080"

type="mms" />

mcc="234"

mnc="15"

apn="uk.lebara.mobi"

user="web"

password="web"

type="default,supl" />

mcc="234"

mnc="15"

apn="uk.lebara.mobi"

user="web"

password="web"

server="*"

mmsc="http://mms.lebara.co.uk/servlets/mms"

mmsproxy="212.183.137.012"

mmsport="8799"

type="default,supl,mms" />

mcc="238"

mnc="02"

apn="internet.sp.dk"

user=""

server=""

password=""

proxy="212.088.064.008"

port="" mmsproxy="212.088.064.008"

mmsport="8080"

mmsprotocol="null"

mmsc="http://mms.telenor.dk"

type="" />

mcc="238"

mnc="02"

apn="internet.sp.dk"

user="" server=""

password=""

proxy="212.088.064.008"

port=""

mmsproxy="212.088.064.008"

mmsport="8080"

mmsprotocol="null"

mmsc="http://mms.telenor.dk"

type="" />

mcc="238"

mnc="02"

apn="telenor"

user=""

server=""

password=""

proxy=""

port=""

mmsproxy="212.088.064.008"

mmsport="8080"

mmsprotocol="null"

mmsc="http://mms.telenor.dk"

type="mms" />

mcc="238"

mnc="02"

apn="telenor"

user=""

server=""

password=""

proxy=""

port=""

mmsproxy="212.088.064.008"

mmsport="8080"

mmsprotocol="null"

mmsc="http://mms.telenor.dk"

type="mms" />

mcc="240"

mnc="02"

apn="data.tre.se"

type="default,supl" />

mcc="426"

mnc="01"

apn="mms.batelco.com"

user="wap"

password="wap"

mmsc="http://192.168.36.10/servlets/mms"

mmsport="80"

type="mms" />

mcc="208"

mnc="15"

apn="free"

type="default,supl" />

mcc="724"

mnc="05"

apn="java.claro.com.br"

user="claro"

password="claro"

type="default,supl" />

mcc="302"

mnc="220"

apn="isp.telus.com"

mmsc="http://aliasredirect.net/proxy/mmsc"

mmsproxy="74.49.0.18"

mmsport="80"

type="default,supl,mms" />

mcc="208"

mnc="10"

apn="fnetnrj"

type="default,supl" />

mcc="208"

mnc="10"

apn="mmsnrj"

mmsproxy="010.143.156.005"

mmsport="8080"

mmsc="http://mmsnrj"

type="mms" />

android apn xml,android 批改默认APN相关推荐

  1. android应用apn.xml,android之APN

    APN全称是Access Point Name,中文即接入点,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络. android系统把所有的APN都保存在数据库中,数据库绝对 ...

  2. android 组装xml,Android中组装xml文件内容

    在Android开发中经常遇到组装xml格式数据的需求,下面是解决方法,希望给大家带来帮助. 下面这段xml文件内容是我们的需求. zhangsan 26 lisi 25 下面是组装xml文件内容的代 ...

  3. android dimensions.xml,[Android Studio #2] 操作資源XML檔

    利用Android Studio產生出第一個程式後,點擊Project按鈕觀察專案的目錄結構,再研究資源檔的使用方法,同時在第一個程式畫面裡增加另一個文字元件. Android Studio的專案目錄 ...

  4. android 构造xml,android 中生成xml文件

    在Android中生成xml文件真的很简单,下面提供2中方法,一种是通过String写入到文件,另外一种是通过XML 的 XmlSerializer. 以后遇到Android写xml内容就不会困惑了 ...

  5. android+阴影+xml,Android 阴影视图 ShadowViewHelper

    软件介绍 ShadowViewHelper 是 Android 的阴影布局. xml: android:id="@+id/activity_main_shadow_view_b" ...

  6. android alphaanimation xml,android AlphaAnimation动画代码实现与XML实现

    Alp 动画,就是透明到不透明. 主要的参数,from,to,dua 核心代码 AlphaAnimation alp = new AlphaAnimation(0, 1); alp.setDurati ...

  7. android iconfont xml,Android IconFont

    一.简介 Iconfont是阿里巴巴出版的矢量文字图标,目前仅支持单色的图标,优势在于体积小,使用方便,在Android中应用iconfont,可以减少安装包的体积. 二.使用方法 把iconfont ...

  8. android draw xml,Android使用XML定义渐变的drawable

    Android使用XML定义渐变的drawable Android,xml,drawable,渐变, 不是什么东西都需要美术来做图,利用Android提供的线程的东西,也能作出一下效果出来.当然比较负 ...

  9. android animate xml,Android Animate旋轉

    我在Android代碼中做了一些挖掘,並看到了在不確定進度條中的使用.試圖創建自己繪製這個標籤後:Android Animate旋轉 android:drawable="@drawable/ ...

最新文章

  1. MATLAB基本操作(九):可视化矩阵的矢量场quiver函数
  2. 模板会有多层镜像_创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建,本博文讲解前两种。基于已有镜像的容器创建该方法是使用docke...
  3. 两种方法实现在HTML页面加载完毕后运行某个js
  4. SNAT,是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址
  5. 收到计算机系统公司退款会计分录,企业账户收到退款,怎么做账务处理?
  6. mvc php 分页,MVC+jQuery.Ajax异步实现增删改查和分页_jquery
  7. 禁用Chrome自动更新
  8. ASP中常用的服务器检测源代码
  9. 易语言卷帘菜单与json_易语言卷帘式菜单加背景图片源码
  10. [导入]代理猎手找大学代理
  11. HTML_BOM-01
  12. [笔记分享] [Camera] msm8x25 camera hal 流程记录
  13. 使用cmd命令 关机
  14. PHP 获取格式化的日期和时间
  15. SSD-Tensorflow项目源码学习:将数据集转化为为TFR文件
  16. (解决)PHP GD 插入PNG图片后透明背景变灰色
  17. h5 视频活体检测(人脸认证)的前端
  18. 【程序设计】定时任务调度平台需求说明书
  19. 我的世界java版如何看坐标_坐标 - Minecraft Wiki,最详细的官方我的世界百科
  20. 人类dna信息量_古人类DNA揭人类演化史 白肤碧眼1万年前才出现

热门文章

  1. 如何用 putty 连接远程 Linux 系统
  2. 腾讯笔试面试经历(2010年)
  3. A.O.史密斯净水新品闪耀德国IFA展 斩获年度产品创新成果奖
  4. 长期在电脑面前喝什么茶好
  5. Mathorcup数学建模竞赛第六届-【妈妈杯】A题:淡水养殖池塘水华发生及池水自净化研究(附特等奖获奖论文、SAS和matlab代码)
  6. 网页布局的方法有哪些?
  7. 性能检测工具:Matrix-TraceCanary 入门
  8. Scala Try 与错误处理
  9. 图片HTML标记是,HTML网页图片标记
  10. Viewstate verification failed 解决办法