Android手机仅与照片,电话和姓名联系

时间:2014-03-13 07:34:28

标签: java android android-contacts android-cursoradapter

我使用以下光标来检索手机中的联系人?但是,代码在SIM和手机上都给了我联系人。是否可以通过电话(如果有),电话号码和显示名称来获取电话中的联系人?

  cursor = getContentResolver().query(Phone.CONTENT_URI, null, null, null, null);

  int contactIdIdx = cursor.getColumnIndex(Phone._ID);                  
  int nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME);                  
  int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER);                 
  int photoIdIdx = cursor.getColumnIndex(Phone.PHOTO_ID);  
  cursor.moveToFirst();

 do {

    try {

     Contact c = new Contact();

     String idContact = cursor.getString(contactIdIdx);
 String name = cursor.getString(nameIdx);
 c.setName(name);

Log.i(TAG,storage.getDriveName()+": "+name);
    String phoneNumber = cursor.getString(phoneNumberIdx);
    Log.i(TAG,storage.getDriveName()+": "+phoneNumber);
c.setPhoneNumber(phoneNumber);
if(phoneNumber != null)
   c.setPhotoUri(getPhotoUri(Long.valueOf(fetchContactIdFromPhoneNumber(phoneNumber))));

contacts.add(cbd);
   } catch(Exception e) {
  Log.e(TAG,storage.getDriveName()+": "+e.getMessage());
 }
} while (cursor.moveToNext());  
 } catch (Exception e) {
   Log.e(TAG,storage.getDriveName()+": "+e.getMessage());

} 
if (cursor != null) {
cursor.close();
}
 }

1 个答案:

答案 0 :(得分:1)

我已经实现了以下代码,为我工作检查出来:

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                ContactsContract.Contacts.CONTENT_URI);
        // filters contact with phone numbers
        contactPickerIntent
                .setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
        startActivityForResult(contactPickerIntent, CONTACT_PICKER);

现在在activityresult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    AndyUtills.removeSimpleProgressDialog();

    if (resultCode == RESULT_OK) {
        switch (requestCode) {
        case CONTACT_PICKER:
            Cursor cursor = null;
            Bitmap bitmap = null;

            Uri result = data.getData();
            // String id = result.getLastPathSegment();

            cursor = getContentResolver().query(result, null, null, null,
                    null);
            // String contactId=cursor.get;
            if (cursor == null) {

                AndyUtills.showToast("Selection Fail", this);
                return;
            }
            if (!cursor.moveToFirst()) {

                cursor.close();
                AndyUtills.showToast("Selection Fail", this);
                return;
            }
            String contactName = cursor
                    .getString(cursor
                            .getColumnIndex((ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
                                    .toString().trim()));
            String contactNumber = cursor
                    .getString(cursor
                            .getColumnIndex((ContactsContract.CommonDataKinds.Phone.NUMBER)));

            // check for contact whether it is already inserted or not
            if (checkForSameNumber(contactNumber)) {
                AndyUtills.showToast("Same contact is already inserted",
                        this);
                return;
            }
            String photo = null;

            // get photo uri from contacts
            try {

                photo = cursor
                        .getString(cursor
                                .getColumnIndex(ContactsContract.CommonDataKinds.Contactables.PHOTO_URI));
                Log.i("TAG", "Activity Result: Old:" + photo);

            } catch (Exception e) {
                e.printStackTrace();

            }

            cursor.close();
            break;

        }

    } else {
        // gracefully handle failure
        Log.w("Auto Respond", "Warning: activity result not ok");
    }
}

希望你能得到你想要的所有东西。