Android 的 ContentProvider URI 更改了通知方案

Android's ContentProvider Uri changes notifications scheme

假设我有这个 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>/phonespeople/<peopleId>/phones/<id>people/<peopleId>/phones/special 也被通知变化!

我做了一些测试,并没有... 我不知道该怎么办... 非常感谢。

由于您没有 peopleId,您唯一能做的就是在 people 上通知。事实上,Android 的 ContactsProvider 做了类似的事情——每次更改都会通知 content://com.android.contacts,无论更改了什么。