【问题标题】:SyncAdapter without a ContentProvider没有 ContentProvider 的 SyncAdapter
【发布时间】:2011-01-10 17:54:35
【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

标签: android android-contentprovider android-syncadapter


【解决方案1】:

在实现 SyncAdapter 时,您总是必须指定内容提供者,但这并不是说它实际上必须做任何事情。

我编写了 SyncAdapter 来创建帐户并与 Android 中的“帐户和同步”框架集成,这些框架不一定将其内容存储在标准提供程序中。

在您的 xml/syncadapter.xml 中:

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accountType="com.company.app"
    android:contentAuthority="com.company.content"
    android:supportsUploading="false" />

在您的清单中:

<provider android:name="DummyProvider"
    android:authorities="com.company.content"
    android:syncable="true"
    android:label="DummyProvider" />   

然后添加一个除了存在之外什么都不做的虚拟提供者,DummyProvider.java:

public class DummyProvider extends ContentProvider {

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
         return 0;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public boolean onCreate() {
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                    String[] selectionArgs, String sortOrder) {
        return null;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                    String[] selectionArgs) {
        return 0;
    }
}

【讨论】:

  • 非常感谢,我不太喜欢使用虚拟提供者的想法,但可能别无选择。
  • 我找了好久没有找到更好的解决方案,分享你的痛苦。
  • 顺便说一句,SDK 中的 SampleSyncAdapter 没有声明内容提供者,因为它使用原生 Android 授权 com.android.contacts ,它有自己的提供者 com.android.providers。联系方式。
  • 但是如何调用syncadapter呢?被调用的密码是什么?
  • +1 "在实现 SyncAdapter 时,您总是必须指定内容提供者"
【解决方案2】:

现在,即使是 Google 的官方文档也建议您使用存根(虚拟)ContentProvider

https://developer.android.com/training/sync-adapters/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多