编程语言
首页 > 编程语言> > 在Android应用程序中自动执行ContentResolver.setMasterSync是不好的做法还是粗鲁?

在Android应用程序中自动执行ContentResolver.setMasterSync是不好的做法还是粗鲁?

作者:互联网

我在我的应用程序中广泛使用syncadaptor来实现其核心功能.我还使用了syncadaptor提供的定期刷新.因此,在手机上禁用“帐户和同步”,我的应用程序将毫无用处.使用ContentResolver.setMasterSyncAuto(true)来打开同步被认为是一种不好的做法或粗鲁.只是做一个ContentResolver.setIsSyncable没有帮助,因为如果主帐户和同步被禁用,那么定期同步不起作用.
处理此方案的常用方法是什么?

提前致谢,

-V-

解决方法:

我会称之为不好的做法.

有两个不同的同步启用标志,用于不同的功能.

无论帐户类型或内容类型如何,主同步都是所有同步的单一启用标志.此设置在“帐户”和“帐户”上为“自动同步”.同步页面和用户通常将其关闭以节省电池电量.一些用户可能(ab)使用它进入某种“请勿打扰”模式.以编程方式,通过ContentResolver.setMasterSyncAutomatically()检查和取消选中此项

其次,您的帐户/权限对具有启用标志.所以,说一个谷歌帐户.你点击谷歌帐户,然后你得到一个子页面…同步驱动器,同步谷歌播放音乐,同步联系人,同步Gmail等等.每个都是一个帐户(com.google)和一个权限(com. android.contacts),配对在一起.它们是可单独控制的,因此我可以拥有同步联系人而不是我的日历的Google帐户.此外,即使列表中的可用项目也可能有所不同 – 我可能有一个帐户安装了谷歌音乐而另一个没有 – 所以该子页面中的内容列表可能会有所不同,选中或取消选中的内容可能会有所不同.请注意,如果附加的权限是可同步的,则该帐户会显示绿色同步圈,但该帐户本身不能单独处理.以编程方式,通过ContentResolver.setSyncAutomatically()检查和取消选中此项,并通过ContentResolver.setIsSyncable()启用/禁用(灰显).如果没有配置,你会把它变灰.

您的应用程序完全有权为其自己的帐户/权限对打开和关闭同步(尽管您应该尊重用户的意愿.)在应用程序的同步设置页面上看起来像“启用同步”复选框,它反映了状态到/来自A& S子页面通过(获取/设置)SyncAutomatically()

是的,您的应用可以更改主同步标记 – 但是这样做,您真的需要考虑是否要越过用户的头来决定他们的手机如何工作.这可以帮助那些不知道如何操作手机的用户,并会严重惹恼用户.我会立即卸载一个未经我的许可更改了手机范围同步设置的应用.我个人最常做的就是在配置同步时向用户弹出一个对话框 – “已配置同步,但在”帐户和同步“页面中打开”自动同步“后才会执行.您是否愿意打开自动同步功能?“然后发出意图将他们带到A& S页面,如果他们说是的话就打开它.这有助于用户了解他们的手机是如何工作的,而不仅仅是改变背后的东西,使其变得更加神秘.

总的来说,未经用户同意,不得重新配置手机.

标签:android,android-service,android-syncadapter
来源: https://codeday.me/bug/20190713/1450752.html