Вопрос

Я хочу реализовать синкадаптер для контента, который я хочу синхронизировать с сервером. Похоже, что для этого вам нужен ContentProvider, зарегистрированный для полномочий, который вы указываете в файле свойств Syncadapter XML.

Поскольку я не хочу, чтобы этот контент был доступен для остальной части телефона, я не реализовал свой собственный ContentProvider и использовал личную реализацию для хранения этого контента.

Знаете ли вы, если можно обеспечить синхронизацию с помощью синкадаптера без предоставления контентапроводов?

Большое тебе спасибо.

Это было полезно?

Решение

Вам всегда нужно указать провайдер контента при внедрении синкадаптера, но это не значит, что он на самом деле должен что-то делать.

Я написал Syncadapapers, которые создают учетные записи и интегрируются с рамками «Счета и синхронизация» в 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" />   

А затем добавьте фиктивное поставщик, который не делает ничего полезного, кроме существующих, DuceProvider.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/trainke/sync-adapters/index.html.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top