Creé un BroadcastReceiver
que escucha un evento CONNECTIVITY_CHANGE
. Por ahora, simplemente imprimo la acción del Intent
que llama al BroadcastReceiver
y sus extras. Estoy usando un teléfono de prueba en nuestra oficina aquí en Manila y la tarjeta SIM es de Dinamarca. Cuando se invoca onReceive()
, esto es lo que se imprime en LogCat:Detectando cuando el roaming está desactivado en 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
Necesito saber cuál es el valor de reason
es cuando la itinerancia se apaga - podría ser roamingOff
adivinando, pero no puede saber seguro, a menos que vaya a Dinamarca. Esto se debe a que tengo que realizar una tarea cuando el servicio de itinerancia se apaga, y noté por LogCat que el evento CONNECTIVITY_CHANGE
se activó por motivos distintos a alternar entre los modos de itinerancia. ¿O hay una forma mejor de detectar cuando el roaming está desactivado?
Código para el receptor de radiodifusión:
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));
}
}
entrada de manifiesto:
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Acabo de registrar el resultado de esa línea junto con el resultado de 'TelephonyManager.isNetworkRoaming()'.Descubrí que 'Settings.Secure.DATA_ROAMING' puede devolver un' 0' (es decir, el roaming de datos está desactivado) mientras que 'isNetworkRoaming()' es 'true'. Supongo que esto se debe a que la compañía de telecomunicaciones aún se encuentra en el modo de itinerancia de la red, pero no estoy permitiendo que mi dispositivo use Internet móvil. Parecen ser conmutadores diferentes, y estoy buscando el modo de roaming de la red. –
¿Y qué quieres saber? Supongo que 'TelephonyManager.isNetworkRoaming()' muestra que estás en roaming, y la configuración muestra si puedes usar Internet en roaming – Jin35
Estoy buscando el modo roaming de la red porque estoy tratando de medir la próxima factura mensual del usuario-- y eso incluye no solo la cantidad de datos móviles enviados/recibidos a través del roaming de datos. –