Блокировка использования 3g приложением

Ответить
Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Блокировка использования 3g приложением

Сообщение klblk » 15 май 2013, 10:22

Извиняюсь, если тема уже поднималась. Собственно в приложение нужно сделать настройку "Использовать мобильную сеть". И если галочка не стоит, то приложение не должно использовать 3g, но могло бы использовать wi-fi если таковой имеется. Подскажите, как это лучше реализовать?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Блокировка использования 3g приложением

Сообщение klblk » 17 май 2013, 12:11

Сделал с помощью BroadcastReceiver'а:

[syntax=java]private BroadcastReceiver internetReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean newValue = isInternetConnected;

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = connManager.getActiveNetworkInfo();
newValue = activeNetwork != null && activeNetwork.isConnected();
if (activeNetwork != null) {
if (isWifiOnly){
if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
isStoppedOfWifi = true;
}
else {
isStoppedOfWifi = false;
}
}
}

isInternetConnected = newValue;
onInternetConnectionChanged();

onWarningChanged();
}
};[/syntax]

в манифесте:
[syntax=xml]<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />[/syntax]

в onCreate привязываю Receiver:
[syntax=java]registerReceiver(internetReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));[/syntax]

ну и в onDestroy "отвязываю":
[syntax=java]unregisterReceiver(internetReceiver);[/syntax]

На первый взгляд вроде бы все работает, есть ли какие-нибудь подводные камни, как думаете?

Ответить