0

私はICSのフレームワークを探し回っていますが、Android Contacts ProviderのContactsProvider2は、挿入/更新後にnotifyChangeを呼び出しているようです。それだけでなく、次の方法で実行します。

NotifyChange(ContactsContract.AUTHORITY_URI, null, syncToNetwork);

つまり、連絡先の AUTHORITY Uri に対する挿入/更新/削除は、コンテンツ オブザーバーが更新を取得するようにトリガーします。理論的には、これはかなり良いことですが、プレゼンスの更新によってもトリガーされるようです。

データ テーブルでカーソルを取得しようとすると、データ テーブルもプレゼンスにリンクされ、プレゼンスへの更新は onLoadFinished で呼び出されます (CursorLoader)。

カーソルの問題を調べると、ContactsProvider2 が呼び出しているためのようです。

setTablesAndProjectionMapForData() 

次に、プレゼンス/ステータス列をすべてのデータ行に追加します。

appendContactPresenceJoin(sb, projection, RawContacts.CONTACT_ID);
appendContactStatusUpdateJoin(sb, projection, ContactsColumns.LAST_STATUS_UPDATE_ID);
appendDataPresenceJoin(sb, projection, DataColumns.CONCRETE_ID);
appendDataStatusUpdateJoin(sb, projection, DataColumns.CONCRETE_ID);

コンテンツ オブザーバーを登録して、実際にプレゼンスの変更の更新を取得せずにデータ テーブルの更新を取得する方法はありますか? 2.3 / 3.x では Data.CONTENT_URI クエリからプレゼンスが除外されていたと思いますが、変更されたようです..

4

1 に答える 1

0

CONTENT_VCARD_URIはどうですか?

于 2013-04-22T15:00:55.500 に答える