Android意图呼叫联系人,而不是号码

时间:2013-09-24 20:36:06

标签: android android-intent

上下文

  • 我写了一个用于安卓的小型拨号器拨打电话号码 联系方式。
  • 我使用Intent.ACTION_CALL并为只有一个电话号码或首选默认号码的联系人传入“tel:”
  • 在应用内,我有联系人的lookup_key,以便我可以访问联系人

问题:

我想发起一个联系的电话,而不是号码,以便Android:

  • 如果联系人有2个以上的号码:将启动电话号码选择对话框然后发起呼叫
  • 如果联系人只有1个号码:只需发起呼叫

我当然可以从头开始实现弹出窗口,但我更愿意委托一个标准操作,以便用户拥有与使用标准拨号器完全相同的用户体验。

1 个答案:

答案 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);


    }                   

}  

它不漂亮或完美,可能需要一些修改,只是有点偏离我的头脑但希望你明白了。