Для прослушивания события отключения данных или передачи данных вам необходимо использовать BroadcastReceiver
. Сначала вам нужно добавить ресивер в AndroidManifest.xml
.
<receiver
android:name=".Networkconncted"
android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Далее вам нужно создать класс, который расширяет BroadcastReceiver
, этот класс будет называться, когда данные подключен/отключен.
public class Networkconncted extends BroadcastReceiver {
public static final String key = "networkInfo";
public static final String disconnected = "DISCONNECTED";
public static final String MOB_INT = "mobile";
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
String value = extras.get(key).toString();
Log.v("netappcheck", value);
String temp[] = value.split(",");
if (temp[0].toLowerCase().contains(MOB_INT)) //check if mobile n/w
if (temp[1].contains(disconnected)) {
Toast.makeText(context,"data disconnected",Toast.LENGTH_SHORT).show();
//do something when data is disconnected
} else {
Toast.makeText(context,"data connected",Toast.LENGTH_SHORT).show();
//do something when data is connected
}
}
}
}
Когда BroadcastReceiver называется intent.getExtras().get(key)
возвратит ниже значение:
[type: MOBILE[EDGE], state: DISCONNECTED/DISCONNECTED,
reason: (unspecified), extra: airtelgprs.com, roaming: false,
failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
Поле в типе упоминает тип сети подключается, при подключении/disconected типа Wi-Fi будет возвращать WIFI[]
, когда подключенный к мобильной сети (3G, EDGE и т. д.), поле типа вернет MOBILE[]
.
В поле state указано состояние соединения.
Переменная температура [] помещает тип в 0-ю позицию, состояние в 1-ом положении. Нам нужно проверить, находится ли его MOBILE
в 0-й позиции, поскольку нам нужно только отслеживать подключение к мобильной сети. Затем проверьте состояние в 1-й позиции.
Я тестировал его в Android 5.0.1 и Android 4.0.4, он отлично работает. Дополнительная информация here
Чувак, я ценю ваш ответ, но похоже, что вы не прошли этот вопрос, прежде чем отвечать на него. –
Итак, в чем именно заключается ваш вопрос? Вы хотите, чтобы подсчет или количество сеансов передачи данных соединялись/разъединялись. Вы хотите уточнить вопрос больше – Psypher
Чувак, разъединение данных не совпадает с отключением сеанса, я не хочу идти в инженерную часть, но если вы останетесь в Индии, попробуйте использовать код ура и посмотрите, сколько раз вы получаете данные отключите событие, прежде чем вы получите всплывающее сообщение от оператора ur, указывающее конец сеанса передачи данных. Я проверил его, не раз. –