Android: включить / отключить автоматическую синхронизацию и фоновые данные - PullRequest
3 голосов
/ 20 апреля 2009

Я хочу разработать приложение, которое отключает фоновые данные (новая функция в Android 1.5) и автосинхронизацию, а затем включает соединение GPRS / EDGE и наоборот.

Я разобрался, как включить / отключить GPRS / EDGE, изменив настройки APN. (странное решение. Однако разработчики Android не могли подумать, что пользователь может захотеть отключить GPRS / EDGE) Но я не смог найти способ включить / отключить автоматическую синхронизацию и фоновые данные.

Я исследовал код Android и, как я понял, операция Sync является намерением. Итак, я хотел достичь с putExtra намерения и инициировать включение / отключение. Но; Я не смог найти правильное ключевое слово. Или, может быть, я был совершенно неправ.

Как правильно решить эту проблему?

Ответы [ 4 ]

4 голосов
/ 10 мая 2009

В моих сновидениях HTC есть флажок для отключения автосинхронизации. Я могу посмотреть на древовидность меню, если хотите, чтобы найти функцию обратного вызова в исходном коде Android. Но я уверен, что автоматическая синхронизация не может быть полностью отключена. Снятие отметки с автоматической синхронизации предотвратит выполнение синхронизации по времени, но это будет происходить каждый раз, когда вы запускаете приложение с возможностями синхронизации, если доступно какое-либо сетевое соединение для передачи данных.

Удачи в любом случае.

РЕДАКТИРОВАТЬ:

Есть два способа получить желаемую информацию.

Во-первых, я думаю, что вы можете использовать код в android-sources / packages / apps / Settings / src / com / android / settings / Utils.java, чтобы создать действие, которое будет включать все ключи намерения, а затем найти тот, который вы хотите.

Другой способ - написать приятное письмо парню, который создал приложение Toggle Setting (http://smartphoneandroid.com/2008/12/28/toggle-setting-perfect-app-for-android-phone.html), поскольку он, очевидно, нашел решение вашей проблемы. Его адрес электронной почты написан в приложении на андроиде). Рынок. Я не буду писать здесь, но если у вас нет доступа к реальному телефону Android, я могу отправить его вам на ваш почтовый адрес.

2 голосов
/ 24 июля 2014

Чтобы отключить автосинхронизацию

ContentResolver.setMasterSyncAutomatically(false);

Чтобы включить автосинхронизацию

ContentResolver.setMasterSyncAutomatically(true);

Требуемое разрешение:

<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
2 голосов
/ 10 мая 2009

Фоновые данные - безопасная настройка , поэтому пользовательские приложения не могут их изменить. Но имейте в виду, это просто настройка - она ​​не применяется. Приложения предназначены для чтения и уважения, но держу пари, что некоторые этого не делают.

1 голос
/ 12 января 2012

setMasterSyncAutomatics () в ContentResolver должны это сделать. Проверьте: общие-настройки синхронизации-автоматическая синхронизация-флажок-программно

...