0

Androidを使用して携帯電話から連絡先の画像、名前、番号を取得したい。これらの情報を取得するために ContactsContract を使用しています。しかし、私はできません。誰でも学習のための正確なチュートリアルを知ることができますか? これらの情報をカスタム リストビューに一覧表示したいと考えています。前もって感謝します。あなたの貴重なガイドが私を助けてくれることを願っています。

PS: DB には友達の番号があります。一致した電話番号を使用して、電話連絡先とDB連絡先を同期したい. 一致したすべての連絡先をリストビューに表示する必要があります。リストビューにはimageView、名前、番号があります..

4

1 に答える 1

0
setReminder.numbers.clear();
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
    ((Activity) mcontext).startActivityForResult(intent, 1);

そしてアクティビティ結果でこれを行います

if (requestCode == 1 && resultCode == Activity.RESULT_OK)
  {         
        getContactInfo(intent);         
      }
} 

protected void getContactInfo(Intent intent)
{
    String phoneNumber = "";
    //String email="";

   Cursor cursor =  ((Activity) mcontext).managedQuery(intent.getData(), null, null, null, null);      
   while (cursor.moveToNext()) 
   {           
           String contactId = cursor.getString(cursor.getColumnIndex(BaseColumns._ID));

           String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));


       if ( hasPhone.equalsIgnoreCase("1"))
           hasPhone = "true";
       else
           hasPhone = "false" ;

       if (Boolean.parseBoolean(hasPhone)) 
       {
        Cursor phones = ((Activity) mcontext).getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
        //Cursor Email = ((Activity) mcontext).getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = "+ contactId,null, null);
        while (phones.moveToNext()) 
        {
          phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
          numbers.add(phoneNumber);
        }

        phones.close();
        Cursor emailCur = ((Activity) mcontext).getContentResolver().query( 
                ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
                null,
                ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = "+ contactId, 
                null, null); 


            while (emailCur.moveToNext()) { 
                // This would allow you get several email addresses
                    // if the email addresses were stored in an array
                 email = emailCur.getString(
                              emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                String emailType = emailCur.getString(
                              emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
            } 
            emailCur.close();

            if(email==null)
            {
                email="";
            }
       }

      }          
   if(phoneNumber != null && phoneNumber.length() > 0){

       chooseContactArray.clear();
       for(int i=0;i<numbers.size();i++)
       {
           chooseContactArray.add(numbers.get(i));
       }
       adapter.notifyDataSetChanged();
   }
   cursor.close();

}
于 2012-06-14T11:26:31.323 に答える