2

連絡先に「XYZ」に等しい種類のIMがある場合は、連絡先のコンテンツプロバイダに問い合わせます。Android:IMですべての連絡先を取得

私は道の下にしようとしたが、私はどんな結果になっていないのです。私は上記のコードを持つすべてのログを取得していない午前

Uri uri1 = ContactsContract.Contacts.CONTENT_URI; 
    String[] projection1 = null; 
    String selection1 = null; 
    String[] selectionArgs1 = null; 
    String sortOrder1 = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"; 
    Cursor cursor1 = context.getContentResolver().query(uri1, projection1, selection1, selectionArgs1, sortOrder1); 
    if (cursor1 != null && cursor1.getCount() > 0) { 
     while (cursor1.moveToNext()) { 
      int contactId = Integer.parseInt(cursor1.getString(cursor1.getColumnIndex(ContactsContract.Contacts._ID))); 

      Uri uri2 = ContactsContract.Data.CONTENT_URI; 
      String[] projection2 = null; 
      String selection2 = ContactsContract.CommonDataKinds.Im.PROTOCOL + " = ? AND " + ContactsContract.Contacts._ID + " = ? "; 
      String[] selectionArgs2 = new String[]{"XYZ", contactId + ""}; 
      String sortOrder2 = null; 
      Cursor cursor2 = context.getContentResolver().query(uri2, projection2, selection2, selectionArgs2, sortOrder2); 
      if (cursor2 != null && cursor2.getCount() > 0) { 
       while (cursor2.moveToNext()) { 
        Log.i(TAG, "Name: " + cursor2.getString(cursor2.getColumnIndex(ContactsContract.Data.DISPLAY_NAME))); 

       } 
       DatabaseUtils.dumpCursor(cursor2); 
      } 
     } 
     cursor1.close(); 
    } 

を。

PS: AIM、Windows Live、Yahoo、Skypeなどの組み込みプロトコルは使用していません。その私のカスタムプロトコル、それは "XYZ"と言う。

答えて

0

この場合、ContactsContract.Data.CONTENT_URIとIMとしてMIMEタイプを照会し、ラベルまたはタイプフィールド(わからない)に、「XYZ」と言ったようなIMのタイプが保持され、値の列にユーザー名のような値を取得します。

このテーブルには、raw_contactsテーブルの未処理の連絡先IDにリンクされている外部キーがあります。

UPDATE

Cursor cursor = getActivity().getApplicationContext().getContentResolver().query(
       ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.MIMETYPE + "=?", new String[]{ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}, null); 
     if(cursor!=null) { 
      cursor.moveToFirst(); 
      do { 
       String value = cursor 
         .getString(cursor 
           .getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); 

       //Types are defined in CommonDataKinds.Im.* 
       int imppType = cursor 
         .getInt(cursor 
           .getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE)); 

       //Protocols are defined in CommonDataKinds.Im.* 
       int imppProtocol = cursor 
         .getInt(cursor 
           .getColumnIndex(ContactsContract.CommonDataKinds.Im.PROTOCOL)); 
       //and in this protocol you can check your custom value 
      }while (cursor.moveToNext()); 
      cursor.close(); 
     } 

おかげ

+0

いくつかのスニペットは、より参考になります。 –

+0

コードスニペットを見つけてください –

関連する問題