Делает ли Wearable.DataApi.getDataItems пользователями UriMatcher

Я пытаюсь извлечь все данные из Wearable.DataApi, которые соответствуют wear:/someAttr/*

Мотивация заключается в том, что я использую PutDataRequest.createWithAutoAppendedId, поскольку хочу избежать переопределения данных, записанных на носимом устройстве.

Я хотел бы сопоставить следующий URI:

wear:/someAttr/3/rand1
wear:/someAttr/2/rand2
wear:/someAttr/3/rand6

Но избегайте

wear:/someOtherAttr/3/rand1

Могу ли я использовать подстановочный знак для получения данных из DataAPI?

В настоящее время у меня есть обходной путь не предоставления URI для Wearable.DataApi.getDataItems, который переносит все данные, но включает в себя нежелательные DataItems, которых я хотел бы избежать.

Есть идеи?

1 ответ

Я нашел решение в похожем вопросе @dzeikei

Из Android официальной документации

int FILTER_PREFIX Тип фильтра для getDataItems(GoogleApiClient, Uri, int), deleteDataItems(GoogleApiClient, Uri, int): если этот фильтр установлен, указанный URI будет использоваться в качестве префикса пути, и операция будет применяться ко всем соответствующим элементам.

Таким образом, чтобы соответствовать моему примеру, вы должны использовать

Uri.Builder builder = new Uri.Builder();
builder.scheme(PutDataRequest.WEAR_URI_SCHEME).path("someAttr");
Uri uri = builder.build();
PendingResult<DataItemBuffer> pendingResult = Wearable.DataApi.getDataItems(googleApiClient, uri, DataApi.FILTER_PREFIX);
Другие вопросы по тегам