android - 检查是否在 Android 应用程序中启用了同步

标签 android sync

有没有办法在我的 Android 应用程序中以编程方式检查“设置”>“帐户和同步”>“数据和同步”下的特定设置是否已启用?

有没有办法检查是否启用了常规同步设置?

谢谢!


如果知道“为什么”有帮助,我目前正在推出自己的同步功能(不使用 SyncAdapter)。但是,如果可能的话,我希望在数据和同步下列出我的同步服务。现在我正计划破解一个什么都不做的虚拟同步服务,并让我的应用程序的同步服务查询是否启用了虚拟同步服务。这会告诉我是否同步。

最佳答案

要知道同步是否已启用(而不像 rajpara's answer 那样处于 Activity 状态),请使用:

AccountManager am = AccountManager.get(YourActivity.this);
Account account = am.getAccountsByType(YOUR_ACCOUNT_TYPE)[0];
boolean isYourAccountSyncEnabled = ContentResolver.getSyncAutomatically(account, DataProvider.AUTHORITY);
boolean isMasterSyncEnabled = ContentResolver.getMasterSyncAutomatically();

“主”同步状态是全局同步开关,用户可以使用它来禁用手机上的所有同步。如果主同步关闭,您的帐户将不会同步,即使您的帐户同步状态表明它已启用。

正如@HiB 提到的,需要android.permission.READ_SYNC_SETTINGS 权限才能访问同步状态。 android.permission.WRITE_SYNC_SETTINGS 需要启用/禁用它。

如 MeetM 所述,您还需要 android.permission.GET_ACCOUNTS 来获取帐户。

关于android - 检查是否在 Android 应用程序中启用了同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11252876/

相关文章:

java - 将 HashMap 转换为数组

java - 图片加载速度非常慢

android Json Volley 如何创建界面

itunes - iTunes 同步/文件传输完成时 iOS 中的通知回调

ios - iPad 处于离线状态,日期设置为 2030 年,用户保存实体,现在使用基于时间戳的同步怎么办?

core-data - 如何将核心数据icloud与ios和macOs应用程序同步

android - 如何在 Kotlin 1.3 中更新协程中的 UI

android - 可缩放 ListView 不滚动

linux - 如何方便地在两个git存储库之间同步文件

iphone - 进行移动和服务器同步的最佳方式是什么?