Android编程,根据姓名获得手机通讯录中的电话号码

2025-04-01 04:14:28
推荐回答(3个)
回答1:

import cn.teachcourse.R;

/**
 * Created by postmaster@teachcourse.cn on 2016/5/5.
 */
public class PhoneNameActivity extends ActionBarActivity {
    private static final String TAG = PhoneNameActivity.class.getSimpleName();
    private EditText et;

    public static void start(Context context) {
        start(context, null);
    }

    public static void start(Context context, Intent extras) {
        Intent intent = new Intent();
        intent.setClass(context, PhoneNameActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        if (extras != null) {
            intent.putExtras(extras);
        }
        context.startActivity(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_name);
        et = (EditText) this.findViewById(R.id.mobile);
    }

    public void getTelClick(View view) {
        String name = et.getText().toString().trim();
        number(name);
    }

    /**
     * 通过输入获取电话号码
     */
    public void number(String name) {
        //使用ContentResolver查找联系人数据
        Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        //遍历查询结果,找到所需号码
        while (cursor.moveToNext()) {
            //获取联系人ID
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            //获取联系人的名字
            String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            if (name.equals(contactName)) {
                //使用ContentResolver查找联系人的电话号码
                Cursor phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
                if (phone.moveToNext()) {
                    String phoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    Toast.makeText(this, phoneNumber+"TeachCourse——blog。。。", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "电话:" + phoneNumber);
                    break;
                }

            }
        }
    }
}

1、修改getTelClick()方法

2、修改Toast面包屑提示

3、修改获取联系人名字方法

4、位置稍微调整

回答2:

你在这个代码下面加一句
//使用ContentResolver查找联系人的电话号码
Cursor phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);

phone.moveToNext(); //指向下一行
因为一开始是指向第一行的上一行,
直接phoneNumber = phone.getString(。。)会出错。

回答3:

你的联系人的信息存放在数据库中?如果时这样的话,可以用cursor,然后查询数据库where=联系人姓名的那一行数据,这样,这个联系人的所有信息就都查到了,然后显示你需要的就可以了