我正在开发一个以用户定义的频率同步所选帐户的Android应用程序。
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
Pattern emailPattern = Patterns.EMAIL_ADDRESS;
for(i=0;i<AcntCount;i++)
for (Account account : list)
if (emailPattern.matcher(account.name).matches())
if(account.name.matches(syncSettings.getString("Account"+i.toString(), null)))
//ContentResolver.addPeriodicSync(account, authority, extras, pollFrequency)
authority
中代替extras
和addPeriodicSync()
的值应该是什么。
我是否必须为此编写同步适配器?
答案 0 :(得分:0)
是。您必须编写SyncAdapter。 addPeriodicSync()专门用于告诉ContentResolver使SyncAdapter在计时器上触发。
您需要什么样的权限?好吧,SyncAdapter在(帐户,权限)对上工作。
该帐户指定了特定的登录信息 - 例如,如果您有多个Gmail地址,则可能有多个。
管理局告诉数据类型 - 例如,使用gmail acocunt,您可能正在同步...邮件,联系人,日历,财务等......所以这会告诉您类型数据和绑定到帐户的服务。
这对配对提供给SyncAdapter - 更具体地说,你在系统上有一堆syncAdapter(他们定义可用于同步的权限),并且当查找正确的同步数据时PeriodicSync触发。
因此,如果您正在编写自己的应用程序以与您自己的自定义服务器同步,那么您将编写一个知道如何读取和存储架构的SyncAdapter,并且您将定义权限。这些只是一个字符串,通常采用java-classpath风格。 - “com.example.SyncAdapterSample”
阅读Why does ContentResolver.requestSync not trigger a sync?,了解获得有效SyncAdapter所需的所有步骤。这绝对是你想去的方式。设置它的步骤很多,但是一旦框架出现,它就会让你的生活变得更加轻松。
现在 - 额外。这些只是如何定期同步的一些选项。一开始你应该没用默认值。然后深入研究The documents。例如,额外的SYNC_EXTRAS_EXPEDITED表示这是一个应该立即同步的高优先级更新 - 通常,调度程序等待一两分钟以便它可以批量请求(并节省电池,而不是通过所有的无线电时间,但只有集中爆发)。通常,在SyncAdapter变得比简单基线复杂得多之前,您不必担心额外内容。