Android APN的設定問題:預設“已起用資料”關閉

來源:互聯網
上載者:User

關鍵字:android  APN的設定問題 SDK APN設定 預設“已起用資料” 關閉
平台:S5PC110 S5PV210
系統:android2.3   android2.3.4

說明:

(1),參考:http://www.bkjia.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),實現效果如下:








摘自 xubin341719的專欄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.