我目前正在开发一个 android 项目,我想在其中将移动联系人同步到服务器,在研究了很多关于SyncAdapter
和创建帐户之后accountmanager
,我自己学会了。但是有两件事我不明白,我在谷歌中搜索了这些但无法得到完美的答案。请不要重复这个问题,我想更清楚地知道它是如何工作的。
- 正如谷歌文档所说,只要同步完成,联系人的脏标志就会改变。我的疑问是,当我以编程方式指定哪些联系人进入服务器时,android 操作系统将如何检测该特定联系人的同步状态?
例如:- 在下面的示例中,我想将捆绑包发送到服务器。
Bundle extras = new Bundle();
extras.putInt("contact name after filtering", "number after filtering");
ContentResolver.requestSync(account,ContactsContract.AUTHORITY, extras);
然后在 Method 上接收到的 Bundle extrasonPerformSync
并发送到服务器。
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
for (String key : extras.keySet())
{
Log.d("Bundle Debug", key + " = \"" + extras.get(key) + "\"");
}
//Code to send to server
}
假设在上面的例子中,变量 extras 是在过滤联系人列表中的更改后获得的捆绑包,想要将它们更新到服务器。现在 SyncAdapter 框架或操作系统将如何检测更改并更新该联系人的脏标志?当然我已经提供了AUTHORITY
,不知道这对发现发生了什么变化有什么帮助。上述方法是正确的实施方式吗?
- 如何判断同步是否失败?或完成?