2015-07-26 2 views
0

Допустим у меня есть этот UriMatcher (находится здесь: http://developer.android.com/reference/android/content/UriMatcher.html):Андроида ContentProvider Uri изменения уведомления Схема

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, чтобы также получать уведомления об изменениях!

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

+0

, чтобы вы знали ID, не так ли? затем на основе этой ID-конструкции 'Uri' вы хотите и назовите 'notifyChange' с ними – pskink

+0

Да, я знаю ID телефона, но не идентификатор людей ... – VohadsA

+0

Я вообще не понимаю, так что ури типа 'people//phones' вы хотите уведомить? все 'люди/*'? или все «люди/*/телефоны»? – pskink

ответ

0

Поскольку у вас нет людей, единственное, что вы можете сделать, это сообщить об people. Фактически, Android ContactsProvider делает что-то похожее - каждое изменение уведомляет content://com.android.contacts, независимо от того, что изменилось.

+0

Зная, что AOSP делает это так, это очень утешительное спасибо. – VohadsA