[英]Check if Sync is Enabled within Android App
有没有办法在我的Android应用程序中以编程方式检查是否启用了设置>帐户和同步>数据和同步下的特定设置?
有没有办法检查是否启用了常规同步设置?
谢谢!
如果它有助于知道“为什么”,我正在推出自己的同步功能(不使用SyncAdapter)。 但是,如果可能的话,我希望在“数据和同步”下列出我的同步服务。 现在我打算破解一个什么也不做的虚拟同步服务,让我的应用程序的同步服务查询是否启用了虚拟同步服务。 这将告诉我是否要同步。
要知道是否启用了同步(并且没有像rajpara的回答那样激活),请使用以下命令:
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
来获取帐户。
您可以借助以下代码和本文档检查是否启用同步
AccountManager am = AccountManager.get(YourActivity.this);
Account account = am.getAccountsByType(Const.ACCOUNT_TYPE)[0];
if(ContentResolver.isSyncActive(account, DataProvider.AUTHORITY){
// sync is enable
}
您还可以在此ContentResolver.setSyncAutomatically
和ContentResolver.setMasterSyncAutomatically
的帮助下以编程方式设置启用/禁用
更新 :
如果当前对挂起列表中的给定帐户或权限进行同步操作或正在进行处理,则isSyncActive将返回true。
boolean isEnabled = ContentResolver.getSyncAutomatically(account, MyProvider);
if(isEnabled)
{
...do something
}
适合我
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.