Является ли плохой практикой или грубым делать 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, чтобы включить его, если они скажут «да». Это помогает пользователю понять, как работает их телефон, а не просто менять вещи за их спиной и сделать его еще более загадочным.

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