没有ContentProvider的SyncAdapter

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

由于我不希望这些内容能被手机的其他部分访问,所以我还没有实现我自己的ContentProvider,并使用个人实现来存储这些内容。

你知道是否有可能使用SyncAdapter提供同步而不提供ContentProvider?

非常感谢你。

在实现SyncAdapter时,您总是必须指定一个内容提供者,但这并不是说它实际上必须执行任何操作。

我已经编写了SyncAdapter来创build帐户,并将其与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; } } 

现在,即使Google的官方文档也build议您使用一个存根(dummy) ContentProvider

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