一、概述

Android的网络配置作为资源文件写入了XML(/frameworks/base/core/res/res/xml/apns.xml),这个资源文件作为Android的默认Apns配置,不建议修改该文件。
因为Apn的配置是根据不同的硬件产品而不同,所以为不同的硬件产品建立各自的配置文件(system/etc/apns-conf.xml) ,而不要去改动默认的配置文件(apns.xml)。

二、TelephonyProvider.java

该类用于设置APN,如果源码提供的设置不能满足你的要求,一般可以通过修改这个类来满足。

下面的代码是initDatabase函数。它主要是用来读取apns.xml(com.android.internal.R.xml.apns)和/system/etc/apns-conf.xml文件中的配置数据,用此来初始化carriers表。
private void initDatabase(SQLiteDatabase db) { // Read internal APNS data Resources r = mContext.getResources(); XmlResourceParser parser = r.getXml(com.android.internal.R.xml.apns); 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); 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) { } } }

更多相关文章

  1. Android逆向之旅---解析编译之后的AndroidManifest文件格式
  2. 收藏老罗的----------Android应用程序组件Content Provider简要
  3. Android(安卓)8.0 SystemUI下拉状态栏快捷开关
  4. Android(安卓)音频开发之 MediaPlayer
  5. 自定义属性时TypedArray的使用方法
  6. Android学习路线(八)为Action bar添加action按钮
  7. Android(安卓)图片文件读取
  8. Android(安卓)APK反编译就这么简单 详解(附图)
  9. 【Android】使用Gradle打包时,获取svn的版本号,删除unalign.apk文

随机推荐

  1. Android Media系统主框架
  2. android之从SD卡读取数据
  3. 【Android】以BaseAdapter做适配器的List
  4. android editText 自定义边框
  5. android手机之间用wifi direct通信
  6. 操作Android 手机通讯录数据库
  7. Android NetworkCallback
  8. Android 读取Assets中图片
  9. Android Opencore OpenMAX学习(1)
  10. Android 保持屏幕常亮