我正在开发一个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中应该给出什么值来代替extrasaddPeriodicSync()
我必须为此编写同步适配器吗?

最佳答案

对。你必须写一个syncadapter。addPeriodicSync()专门用于告诉ContentResolver使SyncAdapter在计时器上触发。
你需要什么权威?好吧,syncadapters在(帐户、权限)对上工作。
帐户指定特定的登录名——例如,如果您有多个gmail地址,则可能有多个登录名。
权威机构告诉你数据的种类——例如,使用Gmail acocunt,你可能正在同步…邮件、联系人、日历、财务等…这将告诉您绑定到帐户的数据类型和服务。
SyncAdapter提供了这一对——更具体地说,系统上有一堆SyncAdapter(它们定义了可用于同步的权限),当PeriodicSync启动时,会查找正确的SyncAdapter。
因此,如果您正在编写与自己的自定义服务器同步的应用程序,您将编写一个知道如何读取和存储架构的syncadapter,并定义一个权限。这些只是一个字符串,通常是Java类路径样式。--“com.example.syncAdapterSample”
阅读Why does ContentResolver.requestSync not trigger a sync?了解获得一个正常工作的syncadapter所需的所有步骤。这绝对是你想走的路。建立它需要很多步骤,但是一旦框架建立起来,它会让你的生活更加轻松。
现在——临时演员。这些只是一些关于如何进行周期性同步的选项。一开始,你应该对默认设置很好。然后深入研究The documents。例如,extra sync_extras_expedited表示这是一个高优先级的更新,应该立即同步——通常,调度程序会等待一两分钟,以便可以对请求进行批处理(并通过始终不打开收音机,而只在集中的突发情况下使用,从而节省电池)。一般来说,在syncadapter比简单的基线适配器复杂得多之前,您不必担心额外功能。

关于android - 以用户定义的频率同步选定的帐户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11624604/

10-12 02:31