2011-01-10 7 views
35

サーバーと同期するコンテンツのSyncAdapterを実装したいと思います。そのようにするには、SyncAdapter XMLプロパティファイルで指定した権限に登録されているContentProviderが必要です。ContentProviderを持たないSyncAdapter

このコンテンツに電話機の他の人がアクセスできないようにするため、私は自分のContentProviderを実装せず、このコンテンツを保存するために個人的な実装を使用しました。

ContentProviderを提供せずにSyncAdapterを使用して同期を提供できるかどうか知っていますか?

ありがとうございました。

+0

(後)質問[私はアンドロイドのAccountManagerを使用する必要がありますか?](http://stackoverflow.com/a/8614699/94363) – rds

答えて

52

SyncAdapterを実装するときは常にコンテンツプロバイダを指定する必要がありますが、実際に何かを行う必要があるとは限りません。

アカウントを作成し、Androidの「アカウント&同期」フレームワークと統合して、標準のプロバイダにコンテンツを必ずしも保存しないSyncAdaptersを作成しました。

<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存在を除いて何も有効ではありませんダミープロバイダーを追加するには、XML/syncadapter.xmlで

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; 
    } 
} 
+2

は、私は本当にこのアイデアのようにしないでください、ありがとうございましたダミープロバイダを使用していますが、選択肢がない可能性があります。 – Moystard

+3

私はより良い解決策を探し求めていましたが、何も見つからず、あなたの痛みを分かち合いました。 –

+7

さらに、SDKにあるSampleSyncAdapterは、独自のプロバイダcom.android.providers.contactsを持つネイティブAndroid機関com.android.contactsを使用しているため、コンテンツプロバイダを宣言しません。 – ChaimKut

関連する問題