Android联系人列表获取电话号码

标签 android contacts picker

嗨,我正在我的应用程序中尝试此代码,我可以获得联系人列表,但是当我按联系人姓名时,我没有在我的编辑文本中得到任何我希望得到联系电话号码的东西 抱歉我的英语不好

         public void doLaunchContactPicker(View view) {
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                Contacts.CONTENT_URI);
        startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode=RESULT_OK) {
            case CONTACT_PICKER_RESULT:
                Cursor cursor = null;
                String phone = "";
                try {
                    Bundle extras = data.getExtras();
                    Set<String> keys = extras.keySet();
                    Iterator<String> iterate = keys.iterator();
                    while (iterate.hasNext()) {
                        String key = iterate.next();
                        Log.v(DEBUG_TAG, key + "[" + extras.get(key) + "]");
                    }

                    Uri result = data.getData();
                    Log.v(DEBUG_TAG, "Got a contact result: "
                            + result.toString());

                    // get the contact id from the Uri
                    String id = result.getLastPathSegment();


                    cursor = getContentResolver().query(Phone.CONTENT_URI,
                            null, Phone.CONTACT_ID + "=?", new String[] { id },
                            null);

                    int PhoneIdx = cursor.getColumnIndex(Phone.DATA);


                    if (cursor.moveToFirst()) {

                                                                        phone = cursor.getString(PhoneIdx);

                        Log.v(DEBUG_TAG, "Got number: " + phone);

                    } else {
                        Log.w(DEBUG_TAG, "No results");
                    }
                } catch (Exception e) {
                    Log.e(DEBUG_TAG, "Failed to Number", e);
                } finally {
                    if (cursor != null) {
                        cursor.close();
                    }
                    EditText ponenumber = (EditText) findViewById(R.id.ednum);
                    ponenumber.setText(phone);

                    if (phone.length() == 0) {
                        Toast.makeText(this, "No number found for contact.",
                                Toast.LENGTH_LONG).show();
                    }

                }

                break;
            }

        } else {
            Log.w(DEBUG_TAG, "Warning: activity result not ok");
        }
    }

最佳答案

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);

while (phones.moveToNext())
{
     String Name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
     String Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

}

关于Android联系人列表获取电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5085139/

相关文章:

java - 登录页面共享首选项未按预期工作

android - 为什么不在 Android Fragment View 绑定(bind)中使用 lateinit 修饰符?

android - 使用 SyncAdapter 将徽章和 Intent 添加到 QuickContactBadge

ios - 在 1 个 VC 中使用两个 UI Pickers,处理委托(delegate)方法

android - 如何在android中选择文件夹?

c# - Xamarin.Forms 选择器默认值

android - eclipse 错误 "Type Unable to resolve target ' android- 3' "

java - 如何在 android 中使用 Room Persistence ORM 工具实现 created_at 和 updated_at 列

ios - 在 iOS、短信或彩信中共享联系人?

ios - 无法将号码添加到 ios 11 中的现有联系人