Android 安卓想打电话给联系人,而不是电话号码
上下文:Android 安卓想打电话给联系人,而不是电话号码,android,android-intent,Android,Android Intent,上下文: 我为android写了一个简单的拨号器,可以拨打电话号码 联系方式 对于只有一个电话号码或首选默认号码的联系人,我使用Intent.ACTION\呼叫并传入“tel:” 在应用程序中,我有联系人的lookup_键,以便访问联系人 问题: 我想打电话给联系人,而不是电话号码,以便Android: 如果联系人有2个以上号码:将启动电话号码选择对话框,然后启动呼叫 如果联系人只有一个号码:只需拨打电话 当然,我可以从头开始实现一个弹出窗口,但我更愿意将其委托给一个标准操作,以便用户拥
- 我为android写了一个简单的拨号器,可以拨打电话号码 联系方式
- 对于只有一个电话号码或首选默认号码的联系人,我使用Intent.ACTION\呼叫并传入“tel:”
- 在应用程序中,我有联系人的lookup_键,以便访问联系人
- 如果联系人有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);
}
}
它既不漂亮也不完美,可能需要一些修改,只是有点超出我的想象,但希望你能理解。谢谢,这不是我想要的,但仍然是朝着正确方向迈出的一步。通过这种方式,我可以选择一个联系人,但“cur”对象可能仍然包含对多个号码的引用,如果开始该特定意图的所有者应显示所有联系人(具有电话号码),并且如果用户选择具有多个号码的联系人,它将自动提示选择哪个号码。。。这应该是光标中的唯一项。如果这不是你想要的,请为误解道歉。