有没有办法在我的 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/