Является ли плохой практикой или грубым делать ContentResolver.setMasterSyncAutomatically в приложении для Android?

Я использую syncadaptor широко в своем приложении для его основных функций. Я также использую периодическое обновление, предоставляемое syncadaptor. Следовательно, «Учетные записи и синхронизация» отключены на телефоне, мое приложение будет практически бесполезным. Считаете ли вы плохую практику или грубо сделать ContentResolver.setMasterSyncAutomatically (true), чтобы включить синхронизацию. Простое выполнение ContentResolver.setIsSyncable не помогает, так как если основная учетная запись и синхронизация отключены, то периодические синхронизации не работают. Каков общий способ обработки этого сценария?

Заранее спасибо,

-v-

Я бы назвал эту плохую практику.

Существует два разных флажка включения синхронизации, которые выполняют разные функции.

Мастер-синхронизация – это единый флаг включения для ВСЕХ синхронизаций независимо от типа учетной записи или типа содержимого. Этот параметр – «Автосинхронизация» на странице «Учетные записи и синхронизация», и пользователь обычно отключает его, чтобы сэкономить аккумулятор. Некоторые пользователи могут (ab) использовать его, чтобы перейти в своего рода режим «не беспокоить». Программно, это проверяется и не проверяется через ContentResolver.setMasterSyncAutomatically()

Во-вторых, ваша учетная запись / ведомство имеет флаг разрешения. Итак, скажите учетную запись google. Вы нажимаете на учетную запись google, а затем получаете подстраницу … Синхронный диск, синхронизация музыки в Google, синхронизация контактов, синхронизация gmail … и т. Д. Каждая из них – это учетная запись (com.google) и Authority (com. Android.contacts), соединенные вместе. Они индивидуально управляемы, поэтому я могу иметь учетную запись google, которая синхронизирует контакты, но не мой календарь. Кроме того, даже доступные элементы в списке могут отличаться – у меня может быть одна учетная запись, в которой установлена ​​музыка google, а другая – нет, поэтому список вещей на этой подстранице может отличаться, и то, что проверено или не отмечено, может отличаться. Обратите внимание, что учетная запись показывает зеленый круг синхронизации, если есть подключенный к ней орган, который синхронизируется, но сама учетная запись не изолируется по отдельности. Программно это проверяется и не проверяется с помощью ContentResolver.setSyncAutomatically() , а также разрешено / отключено ( ContentResolver.setIsSyncable() ) через ContentResolver.setIsSyncable() . Если вы не настроите его, вы будете серым.

Ваше приложение имеет свои права на включение и выключение синхронизации для собственной учетной записи / полномочий (хотя вы должны соблюдать пожелания пользователя.) Подумайте, как на странице настроек синхронизации вашего приложения установите флажок «sync enabled», который отражает состояние в / из (get/set)SyncAutomatically() A & S через (get/set)SyncAutomatically()

Да, ваше приложение может изменить флаг основной синхронизации. Но при этом вам действительно нужно подумать над тем, переходите ли вы к голове пользователя, чтобы принимать решения о том, как работает их телефон. Это может помочь пользователям, которые не знают, как работать с их телефонами, и серьезно разозлит пользователей, которые это делают. Я бы сразу удалил приложение, которое изменило мои настройки синхронизации по телефону без моего разрешения. Самое большее, что я лично хотел бы сделать, это, возможно, вывести диалог пользователю, когда они настроят синхронизацию – «Синхронизация настроена, но не будет выполняться до тех пор, пока на странице« Учетные записи и синхронизация »не включится автосинхронизация. Автоматическая синхронизация? И затем запустите намерение взять их на страницу A & S, чтобы включить его, если они скажут «да». Это помогает пользователю понять, как работает их телефон, а не просто менять вещи за их спиной и сделать его еще более загадочным.

В целом, вы никогда не должны перенастраивать телефон без получения согласия от пользователя.

Intereting Posts
Каковы хорошие стратегии обработки асинхронных обратных вызовов на Android? Как создать TextView как ссылку, которая откроет другое действие в моем приложении? Андроид с несколькими адаптерами к одному адаптеру (Не может найти ссылку на идентификатор). Ресурс не соответствует указанному имени в Android sqlite создать индекс, где предложение не работает Получите уведомление о отправленном письме в onActivityResult «Android» Получить высоту и положение строки состояния для api 11, чтобы изменить цвет Пользовательская карта Android Извлечь растровое изображение из видео в android Получение ошибки «Активность Java.lang.IllegalStateException была уничтожена» при использовании вкладок с ViewPager Как проверить, поддерживается ли файл при помощи андроидной видеозаписи кодом? Использование EditTextPreference с двумя полями ввода пользователя Как использовать код сборки ARM в проекте Android? AVD остается застрявшим на "Android запускает" Как проверить, зарегистрирован ли текущий пользователь в android