2011-06-29 14 views
1

私は数時間、連絡先のニックネームを取得しようとしていますが、まだそれらを動作させることはできません、私は彼らが別のテーブルに電話番号など。しかし、私はそれらにアクセスする方法を知らない。Android - ニックネームとニックネームの種類を取得する

私が持っている最も近いが、この..です

Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{String.valueOf(recordId)}, null); 
    while (cursor.moveToNext()) { 
     Cursor nickname = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.CommonDataKinds.Nickname.CONTACT_ID +" = "+ recordId, null, null); 
     while (nickname.moveToNext()) { 
      try { 
      String nicknameName = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.NAME)); 
      String nicknameType = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.TYPE)); 

      switch (Integer.valueOf(nicknameType)) { 
      case 1: nicknameType = "TYPE_HOME"; break; 
      } 
      list.add(new KeyValue("Nickname:" + nicknameType, nicknameName)); 
      } catch (Exception e) { continue; } 
     } 
     nickname.close(); 
    } 

これは、タイプなどとともに、接触のすべてのデータを取得します:Thomas Owers1これはすべての良いですが、それは私に何を与えるものではありませんデータは、それは電子メール、電話、名前、ニックネームを与えますが、私はそれを区別できません。

ご協力いただきました、ありがとうございました! :)

答えて

5

私は、このコードは、ニックネームを得ます...

ArrayList<KeyValue> list = new ArrayList<KeyValue>(); 

    Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{String.valueOf(recordId)}, null); 
    while (cursor.moveToNext()) { 
     String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
     String[] params = new String[] {String.valueOf(recordId), ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE}; 
     Cursor nickname = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, where, params, null); 
     while (nickname.moveToNext()) { 
      String nicknameName = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.NAME)); 
      String nicknameType = nickname.getString(nickname.getColumnIndex(ContactsContract.CommonDataKinds.Nickname.TYPE)); 
      switch (Integer.valueOf(nicknameType)) { 
      case 1: nicknameType = "Default"; break; 
      case 2: nicknameType = "OtherName"; break; 
      case 3: nicknameType = "MaidenName"; break; 
      case 4: nicknameType = "ShortName"; break; 
      case 5: nicknameType = "Initials"; break; 
      } 
      list.add(new KeyValue("Nickname:" + nicknameType, nicknameName)); 
     } 
     nickname.close(); 
    } 
    return list; 

インターネットを検索するのに数時間後にニックネームを取得することができました! :)

0

すべてのデータを取得しないでください。投影を使用して必要なデータのみを取得する

String[] proj ={ContactsContract.CommonDataKinds.Nickname.NAME, ContactsContract.CommonDataKinds.Nickname.TYPE}; 

Cursor nickname = getContentResolver().query(ContactsContract.Data.CONTENT_URI, proj,ContactsContract.CommonDataKinds.Nickname.CONTACT_ID +" = "+ recordId, null, null); 
+0

悲しいことに、うまくいけない、それはまだすべてのデータを取得: –

関連する問題