Articles of android syncadapter

一般同步设置“自动同步”checkbox以编程方式

我正在寻找一种方法来启用/禁用“一般同步设置”中的“自动同步”checkbox。 Afair股票电力控制部件也有这个function。 如果这个小工具可以做的话,我也应该有一个解决scheme,对吧? 请大家帮助我,我拼命寻找networking上的解决scheme,但没有成功。 此操作是否可能需要用户交互? 我知道我可以发送意图打开同步视图,但这不是我的意图! 我没有寻找特定帐户的同步设置,就像我在这个论坛中发现的一样 ContentResolver.setSyncAutomatically(Account account, String authority, boolean sync);

Android SyncAdaptercallback

我已经沿着SDK中SimpleSyncAdapter示例项目的行实现了SyncAdapter,AccountManager和私有ContentProvider。 这一切都很好。 现在,当从远程服务器下载新的行并设置了特定标志时,我想向用户显示一条消息。 当同步完成时,我需要从SyncAdapter进行callback,以便可以执行查询并显示来自活动的消息。 我在StackOverflow上看到过几个问题,但没有一个很好的答案。 如何从Android SyncAdapter监听进度? 说SyncStatusObserver是无用的。 用户mobibobbuild议使用ResultReceiver从同步线程回应UI。 如何知道同步完成的时间? build议在SyncService中使用Intent。 如何将同步完成信号发送到Android SyncManager? build议使用SyncResult。 由maxpower47链接的示例代码使用SyncResult类来报告exception,但不实际报告同步是否成功完成。 我只是不知道哪个是最好的select,我还没有看到任何使用这些解决scheme的示例项目。

Android:听到像WhatsApp这样的联系人更改

我正在构build一个严重依赖用户联系人的应用程序。 我已经创build了一个Account并在需要时代表这个帐户创buildRawContacts 。 而且我使用SyncAdapter ,事情很好。 但是我仍然错过了这个难题的一些部分: 我试图实现类似于WhatsApp的行为。 这样 – 当任何联系人的姓名或电话发生变化时,将发送给服务器进行评估 。 无论此联系人是否已经在“我的” RawContacts ,他是否刚刚由用户创build。 我知道有ContentObserver但跟踪ContactsContract.Contacts.CONTENT_URI似乎是错误的事情要做,因为它没有给出具体的变化,再加上它被提升了很多次,并从许多事件不感兴趣。 我知道WhatsApp正在使用SyncAdapter,但我认为他们可能会做更多的事情。 任何想法将不胜感激。

Firebase是否适合我的Android应用程序?

我有一个Android应用程序,目前使用Retrofit从云端后端检索/添加/更新和删除数据。 我已经在我的应用程序中实现了SyncAdapter模式。 在后端,数据存储在关系数据库表中,一个servlet吐出JSON结构。 我正在考虑使用Firebase 。 据我所知,firebase不使用关系表,数据存储在类似于JSON树的结构中。 Firebase是否使Retrofitnetworking库无关紧要? 编写SyncAdapter需要大量的样板代码(除XML之外,还需要Content Provider,Account,绑定服务等)。 但是,Firebase使用callback,当服务器上的数据自动更改时,系统会通知您的应用程序。 Firebase是比SyncAdapter更好的select吗?

更改android自定义帐户的用户名和密码

我已经创build了与我的服务器同步数据的android同步适配器。 我工作正常,但现在我想能够更改我的用户名和密码,而无需再次删除和添加帐户。 我怎样才能做到这一点? 我有一个login屏幕,有编辑文本input用户名和密码,但如何将这些更改应用到帐户? 编辑: find了一个如何更改密码的方法: AccountManager.get(mContext).setPassword(account, password ); 其中帐户是我的帐户,密码是新密码。 所以现在我的问题是: 如何更改用户名?

将REST服务与Android应用程序同步

有一个REST服务,我用来填充我的数据库中的信息,这是由我的应用程序以后使用。 我已经阅读了关于此问题的几个主题,现在必须决定如何让REST服务和我的数据库之间的同步工作。 想想一个应用程序,从谷歌的财务API获取有关股票的信息,并将其存储在数据库中,显示应用程序启动时的信息,并在股票价格发生特定事件时发送通知。 我已经实现了当用户手动请求同步时启动的AsyncTask的简单选项。 现在我必须实现自动同步,这些是我find的选项: 创build将执行同步的服务 使用同步适配器/同步提供程序 所以我发现第二个选项有很多优点,特别是在这个video中解释的那些,但也有两个主要的缺点: 我无法find有关android同步的好文档( 这些第三方文章,但没有官方的Google或Android开发者指南) 根据这篇文章搞乱同步适配器可能会导致重大问题,如操作系统崩溃和重启。 我发现的大多数信息都很老旧,所以可能事情已经改变了,但是我的应用程序应该能够使用API​​级别8以上,所以我会非常感谢任何build议和链接到有价值的文档。

使用SyncAdapter而不创build帐户

我的应用程序允许人们使用和pipe理他们的数据,无论他们login。虽然,因为我唯一标识每个设备,我想同步从我的匿名用户(不logging)的数据。 所以,我想知道在这种情况下创build一个匿名帐户是否是一个好习惯,因为SyncAdapters只能用于帐户。 我应该为我的匿名用户创build一个帐户,还是应该将他们的数据与线程/ AsyncTasks / Loaders同步? 特别是,有没有办法使ContentResolver.requestSync()工作,而不需要一个帐户?

使用离线同步deviseAndroid应用程序。 我应该使用SyncAdapter吗?

我正在尝试使用脱机caching和同步function为Web服务制作Android待办事宜客户端。 当您发送邮件时,Web服务将以JSON格式返回关于服务器上的待办任务的数据。 要在服务器上添加待办事项,您需要向服务器发送一个JSON POST,其中包含任务详细信息,然后将返回任务UUID 。 我想实现某种types的同步,以便在离线时添加的任务发送到服务器,并且在Internet可用时将服务器的数据同步到应用程序(双向同步)。 现在,我已经写了一个基本的内容提供商的基于待办事项的应用程序,不与服务器通话。 我的问题是什么是最好的方式来实现这样的function? 计划尝试 我认为我需要从服务器获取JSON,将其推入本地SQLite数据库,执行比较,find未更新的项目并将其推送到服务器。 我想我可以通过在我的ContentProvider中添加asynchronous查询来做到这一点(不知道这是否是最好的方法)。 阙: 我应该写我自己的相同的执行还是可以SyncAdapter做所有这些魔术? 是否还有其他devise参数需要考虑?

Android OAuth2不记名标记最佳做法

这个很好的教程是一个非常好的介绍,Android上的帐户validation,并通过使用Android的AccountManager 。 不过,我需要使用承载令牌创buildOAuth2 API的客户端应用程序进行身份validation。 在获取令牌的时候,我会收到它的过期时间戳,但是我不清楚存储的位置以及如何正确使用它。 问题是,如果我不希望有不必要的旅行到服务器,应用程序会意识到,只有在请求任何随机资源时,服务器收到HTTP 401错误后,该载体才会失效。 那么,解决这个问题的最佳做法是什么? 我的代码中的每个networking请求是否应该有一个重试机制,以防持有者令牌在此期间失效? 捕捉exception并重试时,我可能invalidateAuthToken 。 可以同步适配器以某种方式帮助吗? 由于我是Android开发的新手,我预计解决scheme也可能会完全不同于我的预期。 如果相关,我打算使用Volley进行服务器通信。

如何在SyncAdapter完成时通知呼叫活动?

在我的Android项目中,我使用一个自定义SyncAdapter来下载数据并将其存储在本地SQLite数据库中。 public class CustomSyncAdapter extends AbstractThreadedSyncAdapter { public CustomSyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); } @Override public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) { // 1) Download data via AsyncTask // 2) Store data via ContentProvider } } 我使用ContentResolver来安排主Activity同步,例如… ContentResolver.requestSync(account, Authentication.AUTHORITY, bundle); 在同步完成后有没有通知调用Activity的通用方法?