2011-05-23 196 views
0

我正在编写搜索联系人和拨打电话的代码。我的代码可以列出联系人姓名并选择特定的联系人。但是,当我拨打该选定的联系人时,它会说出所选的姓名,但会拨打联系人列表中的名字。任何人都可以通过从联系人列表中选择姓名来帮助我编写用于拨打特定号码的代码。 在此先感谢。为什么总是拨打第一个号码..!

这里是我用来搜索特定联系号码的代码。但选择第一个数字。

private void populateContacts() 
{ 

    ContentResolver cr = getContentResolver(); 

    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 

    if (cur.getCount() > 0) { 

    while (cur.moveToNext()) 
    { 

     // ID AND NAME FROM CONTACTS CONTRACTS 
     id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

     // GET PHONE NUMBERS WITH QUERY STRING 
     if (Integer.parseInt(cur .getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

     Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
         + " = ?", new String[] { id }, null); 

     // WHILE WE HAVE CURSOR GET THE PHONE NUMERS 
     while (pCur.moveToNext()) 
     { 

       name = cur .getString(cur .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));  

      Log.i("jni", "ID :" + id); 
      Log.i("jni", "NAME :" + name); 

       // Do something with phones 
       //int phoneColumn = pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA); 
       //  number =pCur.getString(phoneColumn); 

      phone = pCur.getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)); 

      Contacts.add(name+ phone ); 
     } 

    } 
    //  pCur.close(); 

} 
+1

您需要向我们提供一些代码。 – 2011-05-23 11:18:40

+0

亚理查德施耐德告诉我们,这还不足以分析问题 – Karthik 2011-05-24 03:33:58

回答

0

您应该指定更多信息以便我们能够帮助您。但是

您应该使用People Content Provider android.provider.Contacts.Phones.CONTENT_URI。 检查此信息http://developer.android.com/guide/topics/providers/content-providers.html,你就能知道如何做到这一点;)

有关于使用联系人内容提供商,你会看到有他们是如何筛选特定的联系,并得到他们的信息内容提供者的解释