Android ContentProvider Uri меняет схему уведомлений

Допустим, у меня есть этот UriMatcher (найденный здесь: http://developer.android.com/reference/android/content/UriMatcher.html):

sURIMatcher.addURI("contacts", "people", PEOPLE);
sURIMatcher.addURI("contacts", "people/#", PEOPLE_ID);
sURIMatcher.addURI("contacts", "people/#/phones", PEOPLE_PHONES);
sURIMatcher.addURI("contacts", "people/#/phones/#", PEOPLE_PHONES_ID);
sURIMatcher.addURI("contacts", "people/#/phones/special", SPECIAL);
sURIMatcher.addURI("contacts", "phones", PHONES);
sURIMatcher.addURI("contacts", "phones/#", PHONES_ID);

У меня обычный ContentProvider:

@Override
public Cursor query(Uri uri...){
   cursor.setNotificationUri(getContext().getContentResolver(), uri);
}
@Override
public int update(Uri uri...){
   getContext().getContentResolver().notifyChange(uri, null);
}

Проблема в том, что когда я что-то обновляю с этим Uri: phones/<id>, я хочу, чтобы эти Uri: people/<peopleId>/phones, people/<peopleId>/phones/<id> и people/<peopleId>/phones/special также получали уведомления об изменениях!

Я сделал несколько тестов, и это не... Я не знаю, что делать... Большое спасибо.


person VohadsA    schedule 26.07.2015    source источник
comment
так ты знаешь идентификатор, верно? затем на основе этого идентификатора создайте нужные Uri и вызовите с ними notifyChange   -  person pskink    schedule 26.07.2015
comment
Да, я знаю идентификатор телефона, но не идентификатор человека...   -  person VohadsA    schedule 26.07.2015
comment
я вообще не понимаю, так какой uri типа people/<peopleId>/phones вы хотите уведомить? все people/* ? или все people/*/phones ?   -  person pskink    schedule 26.07.2015
comment
Да все people/#/phones, когда редактирую телефон!   -  person VohadsA    schedule 26.07.2015


Ответы (1)


Поскольку у вас нет PeopleId, единственное, что вы можете сделать, это уведомить people. На самом деле ContactsProvider в Android делает нечто подобное — о каждом изменении уведомляется content://com.android.contacts, независимо от того, что изменилось.

person Karakuri    schedule 26.07.2015
comment
Знание того, что AOSP делает это таким образом, очень утешительно, спасибо. - person VohadsA; 26.07.2015