2012-01-18 16 views
1

私は、デバイスのすべての連絡先を追加された順にソートしようとしています。 私は次のクエリを使用しています:私は点検した後、クエリすべての連絡先のタイムスタンプを取得する

のソート順にnullContactsContract.CommonDataKinds.Phone.CONTACT_STATUS_TIMESTAMPを渡していますかそれはどんな違いを作っていない

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    String[] projection = new String[] { 
      ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
      ContactsContract.CommonDataKinds.Phone.NUMBER, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_STATUS_TIMESTAMP }; 

    Cursor c = getContentResolver().query(uri, projection, null, null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_STATUS_TIMESTAMP); 

、カーソルがすべてのタイムスタンプ列のnullを持っています。これをやり遂げる方法はありますか、これで間違っていますか?

答えて

2

これは、連絡先のステータス更新のタイムスタンプです。連絡先のいずれも状態の更新をしていないため、おそらくnullになっています。

連絡先がどのように集約されているかによって、連絡先のIDが実際に変更され、元のものより遅く追加されたように見えるため、最初に追加された連絡先を見つける方法はないと思います。なぜこの情報を把握したいのですか?

+0

@ roberty-基準に応じて3つのリストにすべての連絡先を表示したい。だから私はすべての連絡先をどの連絡先がどのリストに来るべきかについてのフラグを持つdbに最初に追加しています。今すぐアプリケーションが再開したら、新しい連絡先が追加されたかどうかを確認するか、そうであればdbに追加する必要があります。とにかく私はそれを他の方法でやりましたが、連絡先についてどのように変化し、連絡先について話すときにどのような状態を意味するかを知りたいのです。 – noob

+1

ステータスはあなたのアプリによってPeople/Contactsアプリに注入できます。デフォルトでは、あなたのGTalkステータスから取得すると信じています。 RawContactsとContactsの2種類の連絡先があります。連絡先は未処理の連絡先の集合です。新しいRaw Contactを追加すると、システムは再集計を行い、その新しく追加されたRaw Contactが既存のContactに属しているかどうかを調べることができます。これは、gmail、twitter、およびfacebookアカウントを持つ同じ人物に対して3つのエントリがないためです。このプロセス中に連絡先IDが変更される可能性があります。 – robertly

+0

@roberty thnx私は理解しました – noob

関連する問題