サーバーと同期したいコンテンツにSyncAdapterを実装したい。そのためには、SyncAdapterXMLプロパティファイルで指定した権限に登録されたContentProviderが必要なようです。
このコンテンツに電話の他の部分からアクセスできるようにしたくないので、私は独自のContentProviderを実装しておらず、このコンテンツを保存するために個人的な実装を使用していません。
ContentProviderを提供せずにSyncAdapterを使用して同期を提供できるかどうか知っていますか?
どうもありがとうございました。
SyncAdapterを実装するときは常にコンテンツプロバイダーを指定する必要がありますが、それは実際に何かをしなければならないということではありません。
アカウントを作成し、「Accounts&sync」フレームワークと統合するSyncAdaptersを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の公式ドキュメントでさえ、スタブ(ダミー)ContentProvider
を使用することを提案しています。
https://developer.Android.com/training/sync-adapters/index.html