stworzyłem BroadcastReceiver
który nasłuchuje zdarzenia CONNECTIVITY_CHANGE
. Na razie wydrukuję tylko akcję Intent
, która wywołuje BroadcastReceiver
i jej dodatki. Używam telefonu testowego w naszym biurze tutaj w Manili, a karta SIM pochodzi z Danii. Kiedy onReceive()
jest wywoływana, to co zostanie wydrukowane w LogCat:Wykrywanie podczas roamingu jest wyłączony w Androidzie
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
muszę wiedzieć, jaka jest wartość reason
jest, gdy w roamingu gaśnie - może być roamingOff
zgadując, ale nie mogę wiedzieć na pewno, chyba że pojadę do Danii. Dzieje się tak, ponieważ muszę wykonać zadanie, gdy usługa roamingu zostanie wyłączona, i zauważyłem z LogCat, że zdarzenie CONNECTIVITY_CHANGE
jest uruchamiane z powodów innych niż przełączanie trybów roamingu. A może jest lepszy sposób na wykrycie, kiedy roaming jest wyłączony?
Kod odbiornika transmisji:
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));
}
}
Oczywisty wpis:
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Właśnie zarejestrowałem wynik tej linii wraz z wynikiem 'TelephonyManager.isNetworkRoaming()'.Dowiedziałem się, że 'Settings.Secure.DATA_ROAMING' może zwrócić' 0' (co oznacza, że roaming danych jest wyłączony), podczas gdy 'isNetworkRoaming()' ma wartość "true". Zgaduję, że to dlatego, że Telco nadal znajduje się w trybie roamingu sieciowego, ale nie pozwalam urządzeniu korzystać z mobilnego internetu. Wygląda na to, że są to różne przełączniki i jestem w trybie roamingu sieciowego. –
A co chcesz wiedzieć? Przypuszczam, że 'TelephonyManager.isNetworkRoaming()' pokazuje, że jesteś w roamingu, a ustawienie pokazuje, czy możesz używać Internetu w roamingu – Jin35
Jestem po trybie roamingu sieciowego, ponieważ próbuję zmierzyć następny miesięczny rachunek użytkownika-- a obejmuje to nie tylko ilość danych mobilnych wysyłanych/odbieranych za pośrednictwem roamingu danych. –