呼叫 android 中的联系人

Call a contact in android

我写了一个 android 应用程序,它使用语音识别并将语音保存到 string.Now 我可以访问这个字符串的不同部分,例如当我说打电话给爸爸时我需要检索爸爸的通讯录号码。

   private void call() {
  Intent in=new Intent(Intent.ACTION_CALL,Uri.parse("0000000000"));
  try{
     startActivity(in);
  }

  catch (android.content.ActivityNotFoundException ex){
     Toast.makeText(getApplicationContext(),"yourActivity is not founded",Toast.LENGTH_SHORT).show();
  }

}

我知道这个函数,但我需要将爸爸的号码传递给 it.For,而不是给 Uri.parse 实际号码,例如 Uri.parse(dad.PhoneNumber)。如何使用姓名从联系人中检索 phone 号码?谢谢

您需要从只知道姓名的联系人处获取号码,因此:

    // Define the fields that the query will return
    String[] PROJECTION = new String[] {
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER
    };

    ContentResolver cr = getContentResolver();

    // Execute the query and receive the cursor with the results
    Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PROJECTION, 
                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " LIKE ?", 
                    new String[] { "Name of the Contact" },
                    null );

用您的联系人姓名更改 "Name of the contact"...

现在您可以从游标中获取值

// First discover the index of the desired field (Number)
final int indexNumber = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String number = cursor.getString(indexNumber);

然后你就可以使用你的意图了。

PS:该示例使用了 LIKE 运算符,因此您可以在游标中找到多个结果。适应你的需要。