Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓想打电话给联系人,而不是电话号码_Android_Android Intent - Fatal编程技术网

Android 安卓想打电话给联系人,而不是电话号码

Android 安卓想打电话给联系人,而不是电话号码,android,android-intent,Android,Android Intent,上下文: 我为android写了一个简单的拨号器,可以拨打电话号码 联系方式 对于只有一个电话号码或首选默认号码的联系人,我使用Intent.ACTION\呼叫并传入“tel:” 在应用程序中,我有联系人的lookup_键,以便访问联系人 问题: 我想打电话给联系人,而不是电话号码,以便Android: 如果联系人有2个以上号码:将启动电话号码选择对话框,然后启动呼叫 如果联系人只有一个号码:只需拨打电话 当然,我可以从头开始实现一个弹出窗口,但我更愿意将其委托给一个标准操作,以便用户拥

上下文:

  • 我为android写了一个简单的拨号器,可以拨打电话号码 联系方式
  • 对于只有一个电话号码或首选默认号码的联系人,我使用Intent.ACTION\呼叫并传入“tel:”
  • 在应用程序中,我有联系人的lookup_键,以便访问联系人
问题:

我想打电话给联系人,而不是电话号码,以便Android:

  • 如果联系人有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”对象可能仍然包含对多个号码的引用,如果开始该特定意图的所有者应显示所有联系人(具有电话号码),并且如果用户选择具有多个号码的联系人,它将自动提示选择哪个号码。。。这应该是光标中的唯一项。如果这不是你想要的,请为误解道歉。