Как включить агент резервного копирования Android только по WiFi?
Я написал BackupAgent для резервного копирования моих данных, но я хочу включить резервное копирование только при подключении WiFi, а не GPRS/3G/4G. Могу ли я контролировать это программно?
3 ответа
Состояние Wi-Fi всегда можно узнать следующим образом:
1) Получить объект WifiManager, используя метод Context.getSystemService (Context.WIFI_SERVICE)
2) Используйте класс isWifiEnabled, чтобы узнать состояние Wi-Fi.
Чтобы узнать статус подключения данных мобильного телефона, получите экземпляр, используя
TelephonyManager tm = Context.getSystemService(Context.TELEPHONY_SERVICE), а затем используйте
тм. getDataState, чтобы узнать состояние подключения к данным.
Теперь запустите BackupAgent, если возвращаемое значение getDataState равно TelephonyManager.DATA_DISCONNECTED, а возвращаемое значение isWifiEnabled равно true.
Чтобы иметь возможность отключить резервное копирование после разрыва соединения (3G/WiFi), создайте новый метод следующим образом:
enter code here
protected void checkMyConnectivity()
{
if (tm.getDataState == TelephonyManager.DATA_DISCONNECTED && wm.isWifiEnabled==true)
return true;
else
return false;
}`
И используйте этот код всякий раз, когда вы хотите проверить подключение и, если возвращаемое значение равно false, остановите загрузку. Если вы хотите быть очень конкретным, используйте вместо этого цикл while.
1) всякий раз, когда у вас нет Wi-Fi, который использует услугу Wi-Fi, и если нет Wi-Fi, то программно отключите учетную запись от настроек телефона
AccountManager accountManager = AccountManager.get(this);
Account[] accounts = accountManager.getAccounts();
Log.i(TAG,"Размер счета"+ длина счета);for(Account acc:accounts){
Log.d(TAG,"acc name "+acc.name+" acc type "+acc.type);
boolean isSync = ContentResolver.isSyncActive(acc, ContactsContract.Settings.CONTENT_URI.toString());
Log.d(
введите код здесь `TAG,"isSync "+isSync);
cr.setSyncAutomatics (acc,, false);// здесь вы не синхронизируете почтовую учетную запись}
protected boolean isWifiConnectivity() {
TelephonyManager telephonyManager = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
WifiManager wifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
return (telephonyManager.getDataState() == TelephonyManager.DATA_DISCONNECTED && wifiManager.isWifiEnabled());
}