系统:android2.3 android2.3.4

说明:

(1),参考:http://www.2cto.com/kf/201206/134101.html

(2),应用的到程序

android2.3.4_GB_T34H\build\core\main.mk

android2.3.4_GB_T34H\development\data\etc\apns-conf.xml

android2.3.4_GB_T34H\development\data\etc\apns-conf_sdk.xml




1,APN的定义:

APN(Access Point Name),即“接入点名称”,是您在通过手机上网时必须配置的一个参数,它决定了您的手机通过哪种接入方式来访问网络,用来标识GPRS的业务种类,目前分为两大类:CMWAP/UNIWAP/3GWAP(通过GPRS访问WAP业务)、CMNET/UNINET/3GNET(除了WAP以外的服务目前都用CMNET,比如连接因特网等)。

2,android中APN流程分析


apn的流程分析及相关文件
相关文件作如下简单说明:
android2.3.4_GB_T34H\build\core\main.mk
--从该文件[核心Makefile文件]中可以看出有关apn设置的xml文件
摘录如下:
# Install an apns-conf.xml file if one's not already being installed.
ifeq (,$(filter %:system/etc/apns-conf.xml, $(PRODUCT_COPY_FILES)))
PRODUCT_COPY_FILES += \
development/data/etc/apns-conf_sdk.xml:system/etc/apns-conf.xml
ifeq ($(filter eng tests,$(TARGET_BUILD_VARIANT)),)
$(warning implicitly installing apns-conf_sdk.xml)
endif
endif

apns-conf_sdk.xml --android2.3.4_GB_T34H/development/data/etc/apns-conf_sdk.xml
--主要用于生成system/etc/apns-conf.xml文件,生成过程本质上就是原文拷贝(用于sdk模拟)

apns.xml -- android2.3.4_GB_T34H/frameworks/base/core/res/res/xml/apns.xml
--该文件实际上在apn的设置方面没有实际意义,然而在android apn设置的逻辑方面却很重要,尤其是里面的version的值。

apns-conf.xml --android2.3.4_GB_T34H/out/target/product/generic/system/etc/apns-conf.xml
--该内容最终打包到system.ext4中:


3,效果查看:

(1)进入terminate

adb shell
cat /system/etc/apns-conf.xml
注:此文件就是来源于此!!

TelephonyProvider.java -- android2.3.4_GB_T34H/packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java
--该class主要用于APN的设置,由于源码提供的不符合定制要求,所以要手动修改!
但是修改最终目的是保证在数据库version更新后,能够及时更新维护APN的数据库表内容!
具体该类如何修改,下文会阐述!

首先保证成功运行了Emulator或开发板,查看APN所维护的数据,操作如下:
# adb shell
# cd /data/data/com.android.providers.telephony/databases
# sqlite3 telephony.db
sqlite> .dump carriers

4,程序中的实现(参考文章中说要改动java的代码,我这里没有改动,也可以用)

(1)打开android2.3.4_GB_T34H\development\data\etc\apns-conf.xml


对应的名称功能为:这里面要注意红色标出的值。



name 3g 名称
apn 3gnet APN
proxy not set 代理
port not set 端口
username not set 用户名
password not set 密码
server not set 服务
mmsc not set
mms proy not set 彩信代理
mms prot not set 彩信端口
mmc 460
mnc 01
authentication
apn type defaul APN类型
apn protocol ipv4 APN协议

对应我们要加入的代码部分:




<!--modify by xu_bin -->

<apn carrier="3g"

mcc="460"

mnc="01"

apn="3gnet"

user=""

password=""

server=""

mmsproxy=""

mmsport=""

mmsc=""

type="default"

/>





2),在编译程序前,删除android2.3.4_GB_T34H\out\target\product\smdkc110\system\etc\apns-conf.xml
(3),编译程序,烧录,下面是我们实现的效果:不用手动设定,自动加入APN上网设定。




5,上网设定自动开启的话,用户不注意的情况下,会产生流量。所以这个功能要用户使用的情况下开启。所以要设定默认为关闭
(1),“设置--无线网络--移动网络--已启用数据”这个选项如果选到了就可以上网,不选不能上网,所以我们默认这个选项关闭。
在程序:android2.3.4_GB_T34H\frameworks\base\services\java\com\android\server\ConnectivityService.java中
[java] /**
* @see ConnectivityManager#getMobileDataEnabled()
*/
public boolean getMobileDataEnabled() {
enforceAccessPermission();
boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),
//Settings.Secure.MOBILE_DATA, 1) == 1;
Settings.Secure.MOBILE_DATA, 0) == 1;//leilei ++10.25
if (DBG) Slog.d(TAG, "getMobileDataEnabled returning " + retVal);
return retVal;
}
/**
* @see ConnectivityManager#getMobileDataEnabled()
*/
public boolean getMobileDataEnabled() {
enforceAccessPermission();
boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),
//Settings.Secure.MOBILE_DATA, 1) == 1;
Settings.Secure.MOBILE_DATA, 0) == 1;//leilei ++10.25
if (DBG) Slog.d(TAG, "getMobileDataEnabled returning " + retVal);
return retVal;
} Settings.Secure.MOBILE_DATA, 1) == 1;的情况下,选项默认为开, Settings.Secure.MOBILE_DATA, 0) == 1;时,选项默认为关闭。
(2),实现效果如下:








更多相关文章

  1. android asset中 zip包解压sdcard
  2. 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)
  3. Android(安卓)JNI入门第三篇――jni头文件分析
  4. android源码编译出现No private recovery resources for TARGET_
  5. Android_查看linux内核版本和android文件系统版本
  6. Android——读取含有双字节字符的TXT文件
  7. Android(安卓)Studio中Run按钮app的module显示红叉
  8. Unity Android(三) Android7.0文件读写以及Android8.0安装apk权限
  9. Android多媒体学习六:利用Service实现背景音乐的播放

随机推荐

  1. Android(安卓)服务器推送技术
  2. Dojo Mobile:iPhone/Android的Web应用开发
  3. Android开发之Android是什么
  4. Android我还可以相信你多少系列文章三之
  5. 月入3W的高级Android架构师都具备哪些能
  6. Android(安卓)Studio 1.0 (稳定版) 完全
  7. 4.Android(安卓)打包时出现的Android(安
  8. 【动态加载】Android动态加载:简单加载模
  9. 【Android(安卓)Training - 00】Google A
  10. 在Android(安卓)Studio中使用Lambda表达