#android #android-syncadapter
#Android #android-синхронизация
Вопрос:
Я сделал свой собственный SyncAdatper
, чтобы добавить контакты моего приложения в контакты на телефоне. Теперь все работает (изображение, статус, пользовательское действие и т.д.), За исключением статуса присутствия.
Согласно Google:
Поскольку статус присутствия по своей сути изменчив, поставщик контента может предпочесть не сохранять это поле в долговременном хранилище.
Итак, я не знаю, как постоянно сохранять присутствие в контактах. Код для обновления присутствия внутри курсора
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.StatusUpdates.CONTENT_URI);
builder.withValue(ContactsContract.StatusUpdates.DATA_ID, c.getLong(1));
builder.withValue(ContactsContract.StatusUpdates.STATUS, status);
builder.withValue(ContactsContract.StatusUpdates.STATUS_RES_PACKAGE, "ar.com.indiesoftware.ps3trophies");
builder.withValue(ContactsContract.StatusUpdates.STATUS_LABEL, R.string.app_name);
builder.withValue(ContactsContract.StatusUpdates.STATUS_ICON, R.drawable.alltrophies);
builder.withValue(ContactsContract.StatusUpdates.PROTOCOL, Im.PROTOCOL_CUSTOM);
builder.withValue(ContactsContract.StatusUpdates.CUSTOM_PROTOCOL, "PS3SyncAdapter");
builder.withValue(ContactsContract.StatusUpdates.IM_ACCOUNT, username);
builder.withValue(ContactsContract.StatusUpdates.IM_HANDLE, username);
builder.withValue(ContactsContract.StatusUpdates.PRESENCE, ContactsContract.StatusUpdates.AVAILABLE);
builder.withValue(ContactsContract.StatusUpdates.STATUS_TIMESTAMP, System.currentTimeMillis());
operationList.add(builder.build());
Появляется зеленая точка, но если я покину экран контактов и вернусь через короткий промежуток времени (секунды), «иногда» зеленой точки там больше нет.
Могу ли я что-нибудь сделать, чтобы решить эту проблему?
Ответ №1:
Я предполагаю, что когда ваше приложение останавливается ОС, оно больше не выдает статус присутствия.