上下文
问题:
我想发起一个联系的电话,而不是号码,以便Android:
我当然可以从头开始实现弹出窗口,但我更愿意委托一个标准操作,以便用户拥有与使用标准拨号器完全相同的用户体验。
答案 0 :(得分:2)
您可以使用类似的内容来提示用户选择联系人,然后选择要拨打的电话号码(如果有多个)...而不是将其传递给打电话的意图:
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
String theID = contactData.toString());
//MAKE YOUR CALL .. do whatever... example:
ContentResolver contentResolver = getContentResolver();
Uri contactData = Uri.parse(theID);
Cursor cur = contentResolver.query(contactData, null, null, null, null);
String theNumber = cur.getString(cur.getColumnIndex("data4"));
cur.close();
Intent my_callIntent = new Intent(Intent.ACTION_CALL);
my_callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
my_callIntent.setData(Uri.parse("tel:" + theNumber));
startActivity(my_callIntent);
}
}
它不漂亮或完美,可能需要一些修改,只是有点偏离我的头脑但希望你明白了。