2011-01-18 6 views

答えて

0

ContactsContactデータは、クエリで明示的な結合を許可しないコンテンツプロバイダを使用してのみ取得できます。

ただし、次のようにデータのデータベース上の単一のクエリを使用して値の両方を持つことができます:あなたは文句を言わない、値を直接取得することができ、その場合には

Cursor c = getContentResolver().query(Data.CONTENT_URI,new String[] {StructuredName.DISPLAY_NAME,Organization.COMPANY}, Data..CONTACT_ID + " = " + contactId,null,null) 
+0

を、私は連絡先IDを取得したい、すべての連絡先の名前と組織名をご連絡ください。組織が空白の場合は、空白の文字列を返す必要があります。上記のクエリから、あなたがMimeTypeを指定していないので、結果は私が望むものではありません。 – random

0

を。 あなたは非常によく、あなたのデータを並べ替えるでしょう、あなたのコード内でそのロジックを持っている必要がありますが、パラメータ

Data.MIMETYPE IN (StructuredName,CONTENT_ITEM_TYPE, Organization.CONTENT_ITEM_TYPE) 

を追加することにより、単一のクエリを使用して、すべての詳細を取得することができます。 各MIMETYPEは個別のレコードをフェッチします。

同様にRawContactsEntityを使用することができます。連絡先とデータ・データベース間の結合を内部的に提供します。

5

あなたは組織名と表示名を取得するために、このコードを使用することができます:はい

Cursor organizationNameCursor = cr.query(ContactsContract.Data.CONTENT_URI,new String[] {Organization.TITLE,Organization.DISPLAY_NAME}, ContactsContract.Data.CONTACT_ID + " = " + contactId + " AND ContactsContract.Data.MIMETYPE = '" 
       + ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE 
       + "'",null,null); 

     organizationNameCursor.moveToNext(); 

     organizationName.setText(organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.TITLE))+" "+organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.DISPLAY_NAME))); 
+0

どのように連絡先IDを取得しましたか? – krisDrOid

関連する問題