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>/phones
、people/<peopleId>/phones/<id>
和 people/<peopleId>/phones/special
也被通知变化!
我做了一些测试,并没有...
我不知道该怎么办...
非常感谢。
由于您没有 peopleId,您唯一能做的就是在 people
上通知。事实上,Android 的 ContactsProvider 做了类似的事情——每次更改都会通知 content://com.android.contacts
,无论更改了什么。
假设我有这个 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
也被通知变化!
我做了一些测试,并没有... 我不知道该怎么办... 非常感谢。
由于您没有 peopleId,您唯一能做的就是在 people
上通知。事实上,Android 的 ContactsProvider 做了类似的事情——每次更改都会通知 content://com.android.contacts
,无论更改了什么。