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

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

您知道是否可以使用SyncAdapter而不提供ContentProvider来提供同步吗?

非常感谢你。

最佳答案

在实现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" />

在您的 list 中:
<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;
    }
}

关于android - 没有ContentProvider的SyncAdapter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4649808/

10-13 03:06