Страница 1 из 1

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

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

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

Добавлено: 17 май 2013, 12:11
klblk
Сделал с помощью 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]

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