Android APNの設定についてデフォルトでは「使用データ」がオフになっています


キーワード:android APNの設定問題SDK APN設定デフォルト「使用データ」オフ
プラットフォーム:S 5 PC 110 S 5 PV 210
システム:android 2.3   android2.3.4 
説明:
(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/3 GWAP(GPRSでWAPにアクセスする)、CMNET/UNINET/3 GNET(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
--最終的にシステムにパッケージ化する.ext 4:
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の設定に使われています.ソースコードが提供するのはカスタマイズの要求に合わないので、手動で修正します.
しかし、最終的な目的は、データベースバージョンの更新後、APNを維持するデータベーステーブルの内容をタイムリーに更新できることを保証することです.
このクラスをどのように修正するかは、以下で説明します.
まず、Emulatorまたは開発ボードが正常に稼働していることを保証し、APNが維持しているデータを確認し、以下の操作を行います.
# adb shell # cd/data/data/com.android.providers.telephony/databases
# sqlite3 telephony.db
sqlite> .dump carriers
 
4,プログラムの実装(Javaのコードを変更すると文章を参照してください.私はここで変更していません.使ってもいいです)
(1)android 2を開く.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プロトコル
 
 
 
追加するコードの部分に対応します.
   
           mcc="460"
        mnc="01"
        apn="3gnet"
        user=""
        password=""
        server=""
        mmsproxy=""
        mmsport=""
        mmsc=""
        type="default"
   />
Android APN的设置问题 默认“已起用数据” 关闭_第1张图片
(2)プログラムをコンパイルする前にandroid 2を削除する.3.4_GB_T 34 Houttargetproductsmdkc 110systemetcapns-conf.xml(3)、コンパイラ、録画、以下は私たちが実現した効果です:手動で設定せず、自動的にAPNのインターネット設定に参加します.
Android APN的设置问题 默认“已起用数据” 关闭_第2张图片
5,インターネット設定が自動的にオンになっていると,ユーザが注意しない場合,トラフィックが発生する.そのため、この機能はユーザーが使用する場合にオンにします.デフォルトでオフにするには
(1)、「設定--ワイヤレスネットワーク--モバイルネットワーク--データ使用可能」というオプションは、選択した場合にインターネットに接続できますが、選択しない場合はインターネットに接続できませんので、デフォルトではオフにします.
プログラム:android 2.3.4_GB_T34H\frameworks\base\services\java\com\android\server\ConnectivityService.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;
    }
 Settings.Secure.MOBILE_DATA, 1) == 1;の場合、オプションのデフォルトはオンです.
 Settings.Secure.MOBILE_DATA, 0) == 1;の場合は、既定ではオフになっています.
(2)、実現効果は以下の通りである.
Android APN的设置问题 默认“已起用数据” 关闭_第3张图片