CONNECTIVITY_CHANGE
イベントをリッスンするBroadcastReceiver
を作成しました。今のところ、BroadcastReceiver
とその付属品を呼び出すIntent
の動作を単に印刷します。マニラの私たちのオフィスではテスト用の電話を使用していますが、SIMカードはデンマークからのものです。 onReceive()
が呼び出されるとき、これはLogCatでプリントアウトする内容である:ローミングがAndroidでオフになったときの検出
action: android.net.conn.CONNECTIVITY_CHANGE
key: extraInfo, value: data.tre.dk
key: htcCurrentActiveNetwork, value: null
key: networkInfo, value: null
key: reason, value: roamingOn
key: noConnectivity, value: null
key: inetCondition, value: null
私はローミングがオフになったときreason
の値が何であるかを知っておく必要があります - 推測してroamingOff
かもしれないが、私は知ることができません確かに、私がデンマークに行くのでなければ。これは、ローミングサービスがオフになったときにタスクを実行する必要があり、ローミングモードの切り替え以外の理由でLogCatからCONNECTIVITY_CHANGE
イベントが発生したことに気付きました。または、ローミングがオフになったときに検出するためのより良い方法はありますか?放送受信のための
コード:
public void onReceive(Context context, Intent intent) {
Log.d(This.LOGTAG, "action: " + intent.getAction());
Bundle extras = intent.getExtras();
for (String key : extras.keySet()) {
Log.d(This.LOGTAG, "key: " + key + ", value: " + extras.getString(key));
}
}
マニフェストエントリ:
Settings.Secure.getInt(getContentResolver(), Settings.Secure.DATA_ROAMING)
この:あなたは、単にローミング状態を検出するために、このラインを使用することができます
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
私は、 'TelephonyManager.isNetworkRoaming()'の結果と共にその行の結果を記録しました。'Settings.Secure.DATA_ROAMING'は' isNetworkRoaming() 'が' true'である間に '0'(データローミングがオフであることを意味する)を返します。これは、通信会社がまだネットワークローミングモードになっているためですが、携帯端末でモバイルインターネットを使用できないためです。彼らは異なるスイッチのように見え、私はネットワークローミングモードの後です。 –
あなたは何を知りたいですか?私は 'TelephonyManager.isNetworkRoaming()'があなたがローミング中であることを示し、ローミング中にインターネットを使用できるかどうかを表示すると設定します。 – Jin35
私はネットワークのローミングモードの後にいます。データローミングを介して送受信されるモバイルデータの量だけでなく、 –