访问联系人列表,搜索联系人,提取其号码,最后拨号(android)

访问联系人列表,搜索联系人,提取其号码,最后拨号(android),android,Android,我的应用程序从用户那里获取联系人姓名,然后它应该在联系人列表中搜索该联系人是否存在。如果是,则拔出其号码,然后自动拨打此号码 我似乎不明白如何查找联系人姓名,然后提取其号码(如果存在) public boolean seekAction(String s) { Intent callIntent= new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); callIntent.set

我的应用程序从用户那里获取联系人姓名,然后它应该在联系人列表中搜索该联系人是否存在。如果是,则拔出其号码,然后自动拨打此号码

我似乎不明白如何查找联系人姓名,然后提取其号码(如果存在)

public boolean seekAction(String s)
    {

        Intent callIntent= new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
        callIntent.setType(Phone.CONTENT_TYPE);
        if (callIntent.resolveActivity(getPackageManager()) != null) 
        {
             startActivityForResult(callIntent, CONTACT_CALL_CODE_REQUEST);

        }

    }



@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {

        if(resultCode == RESULT_OK)
        {
            if(requestCode == CONTACT_CALL_CODE_REQUEST)
            {
                // Get the URI and query the content provider for the phone number
                Uri contactUri = data.getData();
                String[] s = new String[]{Phone.NUMBER};
                Cursor cursor = getContentResolver().query(contactUri, s, null, null, null);

                // If the cursor returned is valid, get the phone number
                if (cursor != null && cursor.moveToFirst()) 
                {
                    int numberIndex = cursor.getColumnIndex(Phone.NUMBER);
                    String number = cursor.getString(numberIndex);
                    // Do something with the phone number
                    Log.i("actionCallResult()", "phone number= "+number);

                    Intent intent = new Intent(Intent.ACTION_DIAL);//calling intent
                    intent.setData(Uri.parse("tel:" + number));
                    if (intent.resolveActivity(getPackageManager()) != null) 
                    {
                        startActivity(intent);
                    }
                }
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
我有这个代码,但它不能帮助我按姓名查找联系人

编辑:


我编写了一个简单的代码,用于查找名为“Mike Peterson”的联系人,如果找到联系人,则发送一条带有联系人号码的消息,否则发送一条“not found”消息

此代码是原始的,决不应服务于任何专业实现。更好的方法是使用自定义
异步任务
阵列存储

请注意,以下权限声明必须出现在您的清单中:

<uses-permission android:name="android.permission.READ_CONTACTS" />

我编写了一个简单的代码,用于查找名为“Mike Peterson”的联系人,如果找到联系人,则发送一条带有联系人号码的消息,否则发送一条“not found”消息

此代码是原始的,决不应服务于任何专业实现。更好的方法是使用自定义
异步任务
阵列存储

请注意,以下权限声明必须出现在您的清单中:

<uses-permission android:name="android.permission.READ_CONTACTS" />

我可以问一下,它如何在不使用意图的情况下在联系人列表中搜索?如何将其用于自定义异步任务和阵列存储@Sahar Avr在“编辑”下查看我的相关代码:我能问一下它如何在不使用意图的情况下在联系人列表中搜索吗?如何将其用于自定义异步任务和阵列存储@Sahar Avr在编辑下查看我的相关代码:
    String str = "Mike Peterson"; // As an example

    Cursor contacts = getApplicationContext().getContentResolver()
            .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

    boolean contactFound = false;

    while (contacts.moveToNext()) {

        String contactName =
                contacts.getString(contacts.getColumnIndex
                        (ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

        if (contactName.equals(str)) {
            contactFound = true;
            break;
        }
    }

    Toast.makeText(getApplicationContext(), contactFound ?
            contacts.getString(contacts.getColumnIndex
                    (ContactsContract.CommonDataKinds.Phone.NUMBER)) : "Contact not found!"
            , Toast.LENGTH_LONG).show();

    contacts.close();