【发布时间】:2016-06-20 14:34:02
【问题描述】:
我目前正在做一个android项目,我想在其中将移动联系人同步到服务器,在研究了很多关于SyncAdapter和在accountmanager创建帐户之后,我自己学会了。但是有两件事我不明白,我在谷歌中搜索了这些但无法得到完美的答案。请不要重复这个问题,我想更清楚地知道它是如何工作的。
- 正如 Google 文档所说,只要同步完成,联系人的脏标志就会改变。我的疑问是,当我以编程方式指定哪些联系人进入服务器时,android 操作系统将如何检测该特定联系人的同步状态?
例如:- 在下面的示例中,我想将捆绑包发送到服务器。
Bundle extras = new Bundle();
extras.putInt("contact name after filtering", "number after filtering");
ContentResolver.requestSync(account,ContactsContract.AUTHORITY, extras);
然后在onPerformSync 方法上接收到的Bundle extras 并发送到服务器。
@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,不知道这对找出变化有什么帮助。上述方法是正确的实施方式吗?
- 如何判断同步是否失败?还是完成了?
【问题讨论】:
标签: android android-contentprovider android-syncadapter accountmanager android-authenticator