说明:

(1),参考:http://myqdroid.blog.51cto.com/2057579/389134

(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] view plaincopy
  1. /**
  2. * @see ConnectivityManager#getMobileDataEnabled()
  3. */
  4. public boolean getMobileDataEnabled() {
  5. enforceAccessPermission();
  6. boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),
  7. //Settings.Secure.MOBILE_DATA, 1) == 1;
  8. Settings.Secure.MOBILE_DATA, 0) == 1;//leilei  ++10.25
  9. if (DBG) Slog.d(TAG, "getMobileDataEnabled returning " + retVal);
  10. return retVal;
  11. }

Settings.Secure.MOBILE_DATA, 1) == 1;的情况下,选项默认为开, Settings.Secure.MOBILE_DATA, 0) == 1;时,选项默认为关闭。

(2),实现效果如下:

Android APN的设置问题 默认“已起用数据” 关闭相关推荐

  1. Android APN的设置问题

    Android APN的设置问题 推荐 原创yqmiao2010-09-08 16:23:20评论(16)24325人阅读 1.问题的引入 在android源码,成功执行了make 和 make sd ...

  2. Android 各版本 设置 USB 默认连接 MTP 模式 ( Android 6.0+ )

    Android 各版本 设置 USB 默认连接 MTP 模式 ( Android  6.0+ ) Android 6.0 以及之后的版本,google默认设计直接配置USB连接模式为 :仅充电: 项目 ...

  3. Android Studio简单设置

    2019独角兽企业重金招聘Python工程师标准>>> Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面 ...

  4. 【转】Android Studio简单设置

    原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...

  5. Java 和 Android系统环境变量设置

    Java环境变量设置 JAVA_HOME D:\Program Files\Java\jdk1.7.0_06 ClassPath .;D:\Program Files\Java\jdk1.7.0_06 ...

  6. mysql的text的默认值,mysql给text设置一个默认值(干货)

    这周有个需求里面原先是用redis的,但是后面经同事介绍说明,决定还是用mysql,当时想在表里面加一个text字段,但是考虑到程序其他地方会不会有对该表的插入操作,所以不经思索的就说给text字段加 ...

  7. android设置成默认应用程序,在Android中设置和取消设置默认应用

    我有一个尝试"进入信息亭模式"的应用程序,但是我只希望它仅出现在一个Activity上.在修改了一些控件之后,我想到了Intent.createChooser(). 我想做的是,一 ...

  8. android设置为默认短信应用,如何在Android上设置默认短信应用 | MOS86

    与iOS不同,Android允许您使用第三方应用来执行基本功能,例如发短信. 这是您可以在Android手机上设置新的默认短信应用的方法. 首先,您需要安装要使用的替换短信应用程序. Play商店上有 ...

  9. Android APN设置

    Android APN设置 概述 Apn设置,即"接入点名称"设置,Apn的全称是Access PointName,是用户在通过手机上网时必须配置的一个参数,它决定了您的手机通过哪 ...

最新文章

  1. Exchange 2007迁移2010时的公用文件夹多个公用树错误
  2. form表单提交数据编码方式和tomcat接受数据解码方式
  3. Metasploit渗透某高校域服务器
  4. java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)
  5. 如何备份数据_如何通过归档、备份和灾难恢复实现多云数据保护
  6. Spring高级之注解@DependsOn详解(超详细)
  7. flutter图片识别_从头到尾撸一遍Flutter的一切...
  8. day03_js学习笔记_03_js的事件、js的BOM、js的DOM
  9. Effective Modern C++ 第三章第二节,C++新特性
  10. 【渝粤教育】国家开放大学2018年秋季 1058t商法 参考试题
  11. 我的第二个切换图片高亮显示,给力
  12. Atitit 提升开发效率的方法 提升语言级别 目录 1. 提升语言级别到4gl 1 1.1. 语言的代际关系 sql 》script 》java 1 1.2. 使用4gl dsl语言与api 1
  13. (2021) 26 [持久化] 持久数据的可靠性:RAID和journaling
  14. 有限元分析试题:ANSYS有限元分析中级培训考题及其答案解析(填空+选择+判断+解答)
  15. YOLOv3学习——锚框和候选区域
  16. RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022
  17. win7底部任务栏还原方法
  18. clang static analyzer源码分析(番外篇):RegionStore以及evalCall()中的conservativeEvalCall
  19. 论文翻译-Clicks can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue
  20. 2020.8.3【算协集训】线性dp

热门文章

  1. 介绍密码 ParaTime
  2. NOIP2021 游记
  3. 超越 Xshell!号称下一代终端神器,用完爱不释手!
  4. android 浮动小图标,android - 调整浮动动作按钮的图标大小(fab)
  5. 【Codeforces 652 C Foe Pairs 】
  6. 隐藏进程中的模块绕过IceSword的检测
  7. 有哪些epub转txt方法?快把这些转换方法收藏起来吧
  8. Java面向对象 - 封装、继承和多态的综合练习
  9. 开发利器 Emeditor
  10. URLdecode()和URLencode()的作用及区别