标签: android-syncadapter

在Android App和网络服务器之间同步数据

我想在Android应用程序和服务器之间同步数据(例如数据库记录,媒体).如果您已经看过Evernote或类似的应用程序,您当然明白我的意思.

我有一些问题(想象一下我们想要同步DB记录):

  1. 每个用户都有自己的一部分服务器空间(例如EvernoteDropbox).也许用户通过手机创建新记录并在服务器中创建新记录.我如何将这些记录匹配在一起?如果有相同ID的记录你建议我使用哪种算法?

  2. 除了JSON,手机设备和服务器之间有没有办法发送数据?

  3. 如果SyncAdapterContentProvider可以解决我的问题,请完全为我解释.(如果您可以向我提供一些示例或教程或任何建议或关键字,以帮助扩大/指导我的搜索也将受到赞赏).

android data-sharing android-syncadapter

255
推荐指数
6
解决办法
19万
查看次数

为什么ContentResolver.requestSync不会触发同步?

我正在尝试实现Google IO中讨论的内容提供商同步适配器模式- 幻灯片26.我的内容提供商正在工作,当我从Dev Tools Sync Tester应用程序触发它时,我的同步工作,但是当我调用ContentResolver时.来自我的ContentProvider的requestSync(帐户,权限,捆绑),我的同步永远不会被触发.

ContentResolver.requestSync(
        account, 
        AUTHORITY, 
        new Bundle());
Run Code Online (Sandbox Code Playgroud)

编辑 - 添加的清单片段我的清单xml包含:

<service
    android:name=".sync.SyncService"
    android:exported="true">
    <intent-filter>
        <action
            android:name="android.content.SyncAdapter" />
    </intent-filter>
    <meta-data android:name="android.content.SyncAdapter"
    android:resource="@xml/syncadapter" />
</service>
Run Code Online (Sandbox Code Playgroud)

- 编辑

与我的同步服务关联的syncadapter.xml包含:

<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"  
    android:contentAuthority="AUTHORITY"
    android:accountType="myaccounttype"
    android:supportsUploading="true"
/>
Run Code Online (Sandbox Code Playgroud)

不确定其他代码会有用.传递给requestSync的帐户是"myaccounttype",传递给调用的AUTHORITY与我的syc适配器xml匹配.

ContentResolver.requestSync是否是请求同步的正确方法?看起来同步测试工具直接绑定到服务并调用启动同步,但这似乎违背了与同步架构集成的目的.

如果这是请求同步的正确方法,那么同步测试器为什么会工作,而不是我对ContentResolver.requestSync的调用?我需要在捆绑中传递一些东西吗?

我正在运行2.1和2.2的设备上的模拟器中进行测试.

android android-contentprovider android-syncadapter

112
推荐指数
1
解决办法
4万
查看次数

如何使用Android SyncAdapter?

我尝试了解Android同步逻辑.我不明白的是syncadapter.xmlAndroid SDK示例项目中包含的文件SampleSyncAdapter.如果您下载了SDK示例,则它应位于以下文件夹中:

SDK/android-sdk-PLATFORM/samples/android-VERSION/SampleSyncAdapter/res/xml/syncadapter.xml
Run Code Online (Sandbox Code Playgroud)

我读过,内容提供者的权限应该是字符串或对资源的引用.内容权限到底是什么com.android.contacts?以下是文件的内容(没有许可证信息和注释,API级别16).

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
    android:contentAuthority="com.android.contacts"
    android:accountType="com.example.android.samplesync"
    android:supportsUploading="false"
    android:userVisible="true"
/>
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-syncadapter

51
推荐指数
2
解决办法
5万
查看次数

没有ContentProvider的SyncAdapter

我想为我想要与服务器同步的内容实现SyncAdapter.看来要这样做,您需要为SyncAdapter XML属性文件中指定的权限注册ContentProvider.

由于我不希望手机的其余部分可以访问此内容,因此我没有实现自己的ContentProvider并使用个人实现来存储此内容.

您是否知道在不提供ContentProvider的情况下是否可以使用SyncAdapter提供同步?

非常感谢你.

android android-contentprovider android-syncadapter

38
推荐指数
2
解决办法
1万
查看次数

Android中的向上同步和向下同步?

我正在开发一个销售点应用程序,需要非常好的同步机制.我们有Magento数据库.安卓设备有SQLite本地Db.现在我们需要以下列方式进行同步:

本地------同步到--------------->服务器(向上同步)

服务器------同步到--------------->本地(向下同步)

有两件事:

1)写(如何保重?)

对于我在本地进行的每个更改,它将直接将本地同步到服务器

2)回写(如何保养???)

每当服务器发生变化时,我们都需要将所有本地服务器与服务器同步.

因此,任务是:识别服务器更新

并同步我们的当地人.就像有4个设备在商店中运行,我们通过一个设备添加了一个新客户.现在我希望其他三个设备本地数据库也更新了有关该客户和服务器的信息也已更新.

我听说过后台线程并在一段时间后运行线程.但是,这样做的最佳方法是什么,不会影响应用程序.此外,所有Big Retail商店都使用同步过程.他们用的是什么?

任何帮助表示赞赏.

android synchronization background-process point-of-sale android-syncadapter

26
推荐指数
2
解决办法
2162
查看次数

从设置中隐藏同步适配器的虚拟帐户

我创建了一个带有虚拟帐户的同步适配器,我不希望它出现在"设置"应用程序的"帐户"列表中,也不希望用户按下"设置"中的"添加帐户"按钮.我在同步适配器定义中尝试了android:userVisible ="false",但仍然显示该帐户.我在仿真器和3个物理设备上试过这个.一切都正常工作,它同步我需要的所有数据,唯一的错误是我在列表上看到帐户,我不想.

我的authenticator.xml是:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
                   android:accountType="net.astagor.android.hhp.account"
                   android:icon="@drawable/ic_launcher"
                   android:smallIcon="@drawable/ic_launcher"
                   android:label="@string/app_name"
    />
Run Code Online (Sandbox Code Playgroud)

我的syncadapter.xml是:

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
          android:contentAuthority="net.astagor.android.hhp"
          android:accountType="net.astagor.android.hhp.account"
          android:userVisible="false"
          android:supportsUploading="true"
          android:allowParallelSyncs="false"
          android:isAlwaysSyncable="true"
    />
Run Code Online (Sandbox Code Playgroud)

我添加我的adpater像这样:

 Account account = AuthenticatorService.GetAccount();

 AccountManager accountManager = (AccountManager) context
    .getSystemService(Context.ACCOUNT_SERVICE);

 if (accountManager.addAccountExplicitly(account, null, null)) {

ContentResolver.setIsSyncable(account, StubProvider.AUTHORITY, 1);

ContentResolver.setSyncAutomatically(account,
        StubProvider.AUTHORITY, true);

ContentResolver.addPeriodicSync(account, StubProvider.AUTHORITY,
        new Bundle(), SYNC_FREQUENCY);
 }
Run Code Online (Sandbox Code Playgroud)

我在帐户列表和添加帐户列表中获取帐户.

请帮忙!:)

account android android-syncadapter

24
推荐指数
2
解决办法
5946
查看次数

默认情况下,在app中启用同步选项

我使用odoo移动框架.如何在应用启动时启用同步选项?(默认情况下禁用该选项.)

在此输入图像描述

android android-syncadapter odoo odoo-8 odoo-mobile

23
推荐指数
1
解决办法
338
查看次数

自己的Android同步适配器?

Android 2.0的新闻稿指出新版本支持同步适配器,因此电子邮件和日历不仅可以与gmail和交换同步.但是,在线没有可用的信息如何编写这样的同步适配器.有没有人试过它和一些示例代码?

android synchronization android-syncadapter

21
推荐指数
3
解决办法
3万
查看次数

当SyncAdapter在android上运行同步时?

假设我的应用程序实现了SyncAdapter功能,并没有定义定期同步.在这种情况下会发生同步吗?我可能会想到的第一个场景是本地ContentProvided /数据库内容更改.什么是服务器更改?SyncAdapter将如何了解这一点?

android android-syncadapter

21
推荐指数
1
解决办法
9652
查看次数

如何使用SyncAdapter处理远程服务器的RESTful更新

我观看了Google I/O REST演讲并阅读了幻灯片:http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

关于如何很好地处理远程服务器引发的更新错误,我仍然有点不清楚.我已经实现了自己的ContentProvider和SyncAdapter.考虑这种情况:

通过REST调用更新用户的联系人详细信息:

  1. 使用ContentResolver请求更新.
  2. 我的ContentProvider 立即更新应用程序的本地Sqlite数据库并请求同步(根据Google I/O对话中的建议).
  3. 调用我的SyncAdapter.onPerformSync()并执行REST调用以更新远程数据.
  4. 远程服务器响应"错误:无效的电话号码"(例如).

我的问题是,SyncAdapter向我的ContentProvider发出信号的最佳方式是,这个更改需要从应用程序的本地数据库中退出,并向我的Activity发出更新请求失败的信号(并传递返回的错误消息)从服务器)?

我的活动需要在等待结果时显示进度微调器,并知道请求是成功还是失败.


为了使用来自服务器的内容更新本地应用程序数据库,SyncAdapter模式对我来说非常有意义,而且我的工作正常.但是对于应用程序服务器的更新,我似乎无法找到处理上述方案的好方法.


另一件事......;)

假设我调用ContentResolver.notifyChange(uri,null,true); 来自我的ContentProvider的update()方法.true以及android:supportsUploading="true"将导致我的SyncAdapter的onPerformSync()被调用.太棒了,但是在onPerformSync()中,如何判断我应该同步哪个URI?每次收到Sync请求时,我都不想简单地刷新整个数据库.但是你甚至无法将Bundle传递给notifyChangeCall()以传递给onPerformSync().

我在onPerformSync()上看到的所有例子都非常简单,并没有使用自定义的ContentProvider,那里有任何现实世界的例子吗?而且文档有点像燕窝.先生,维吉尔·多布扬斯基(Virgil Dobjanschi),你没有划桨就把我留在了小溪里.

rest android sync android-contentprovider android-syncadapter

20
推荐指数
1
解决办法
7994
查看次数