`

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

 
阅读更多
系统: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),实现效果如下:








分享到:
评论

相关推荐

    android手机APN设置

    Android 手机 APN 设置 APN(Access Point Name)是移动网络中的一个重要概念,它是指移动网络中的一个访问点名称,用于标识移动网络中的一个访问点。Android 手机中的 APN 设置是指在 Android 手机中设置移动网络...

    android APN 设置

    在Android系统中,APN(Access Point Name)是设置数据连接的关键配置,它定义了设备如何连接到互联网或移动数据网络。APN包含了运营商提供的网络接入点信息,比如网络类型(2G、3G、4G、5G)、用户名、密码、服务器...

    Android开发之系统信息【5】——获取APN列表

    Android 系统中对于 APN 的网络 API 没有公开,但是我们可以通过阅读源代码,然后进行数据库操作,系统会自动监听数据库的变化,从而实现开启或者关闭 APN。 APN(Access Point Name)是移动网络上的一个概念,指的...

    android apn设置 A20 A83 RK3288 验证通过

    在Android系统中,APN(Access Point Name,接入点名称)是用于移动设备连接网络的重要配置,它定义了手机如何连接到互联网,包括使用的网络类型(如GPRS、3G、4G或5G)、数据服务提供商以及相关认证信息。...

    android 设置apn

    在Android系统中,APN(Access Point Name)是用于配置移动数据网络连接的重要设置,它定义了设备如何连接到互联网,特别是通过蜂窝数据。APN设置包括运营商、用户名、密码、代理服务器、端口等信息,对于使用特定...

    android中的APN开发

    在Android系统中,APN(Access Point Name)是网络连接的关键配置,用于定义设备如何接入互联网,特别是通过移动数据。APN包含了网络提供商的名称、数据类型、用户名、密码等信息,这些信息决定了手机如何通过运营商...

    android 全面解析apn

    Android 全面解析 APN APN(Access Point Name)是 GPRS 背bone 中的一个参考点,指向一个 GGSN(Gateway GPRS Support Node)。GGSN 是一个核心网络设备,负责将用户的数据流量转发到互联网上。APN 是一个字符串,...

    Android端APN实现module

    在Android系统中,APN(Access Point Name)是用于设置移动数据网络连接的关键参数,它定义了设备如何连接到互联网,通常包括网络运营商、数据服务类型等信息。本模块主要探讨的是如何在Android应用程序中通过代码来...

    android apn切换程序

    在Android系统中,APN设置用于定义数据连接的类型、网络速度、安全设置等,比如2G、3G、4G或5G的数据连接,以及是否启用彩信和互联网服务。在某些情况下,用户可能需要手动切换APN以优化网络性能或者解决特定服务的...

    android APN开发流程

    ### Android APN开发流程详解 #### 一、数据连接机制概览 Android设备的数据连接...理解这些细节对于深入掌握Android系统的数据连接机制至关重要,有助于开发者优化网络性能、解决连接问题以及开发更稳定的应用程序。

    Android APN开发流程分析.doc

    数据连接的核心控制类是 DataConnectionTracker,存在于 GSMPhone 里,数据连接不需要用户的干预,在 APN 设置好之后,在适当的情况下就会自动激活。 其关键步骤包括: * DataConnectionTracker.trySetupData→...

    [Mark安卓教程]Android手机修改APN不保存解决办法.pdf

    当Android手机出现无法修改或保存APN设置的情况时,原因往往在于系统默认的APN配置与目标网络环境存在差异。例如,当使用了国外运营商定制的ROM时,其内置的APN配置可能与国内运营商的要求不符,导致用户自定义的APN...

    设置APN节点,并切换到当前节点

    本项目中,我们关注的重点是如何在Android系统中设置APN,并且实现APN节点的切换,这对于网络服务的提供,特别是在企业级项目中,具有重要的实用价值。 首先,我们要理解APN的作用。APN包含了运营商信息、数据类型...

    android widget GRRS/3G(APN)上网开关

    本教程将聚焦于创建一个GRRS/3G(GPRS/EDGE和3G网络)APN(Access Point Name,接入点名称)上网开关的Android小部件。这个小部件允许用户快速切换移动数据连接,对于经常需要控制数据流量的用户非常实用。 首先,...

    获取和修改手机当前APN

    // 设置新的 APN 值 values.put("apn", "新的 APN 名称"); resolver.update(uri, values, null, null); ``` 需要注意的是,在修改 APN 前,需要检查当前 APN 的状态,确保其处于可修改状态。同时,在修改 APN 后,...

    Android APN文件装换为windowsphones8 APN文件

    标题所提到的“Android APN文件转换为Windows Phone 8 APN文件”是一个解决跨平台APN配置问题的方法。由于Android的APN配置信息存储在一个文本文件中,通常命名为“apn.conf”或“apns-conf.xml”,而WP8系统则需要...

    2011年全球APN接入点【完整版】

    2011年全球APN接入点 APN(Access Point Name)是移动...APN 设置是移动设备连接互联网的重要设置,了解不同国家和地区的 APN 设置信息可以帮助 Android 开发者更好地理解 APN 设置,并确保应用程序正确连接互联网。

    Android的APN开发源码分析

    ### Android的APN开发源码分析 #### 一、Android数据连接原理 Android的数据连接机制主要是基于PPP(Point-to-Point Protocol)的方式实现的。PPP协议是一种广泛使用的串行链路通信协议,它允许用户通过拨号或其他...

Global site tag (gtag.js) - Google Analytics