0

我尝试从联系人列表中获取电话号码和联系号码。这是我的代码来显示它......

public class ContactTutorialActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);

 startActivityForResult(intent, 1);                
  }
@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data != null) {
       Uri uri = data.getData();

       if (uri != null) {
           Cursor c = null;
           try {
               c = getContentResolver().query(uri, new String[]
                        { 
       ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.TYPE },null, null, null);

     if (c != null && c.moveToFirst()) {

     String number = c.getString(0);

     int type = c.getInt(1);

    showSelectedNumber(type, number);

      }
        } finally {
       if (c != null) {
        c.close();
        }
       }
      }
    }
}
public void showSelectedNumber(int type, String number) 
{

    Toast.makeText(this, type + " " + number, Toast.LENGTH_LONG).show();      
}
}

然后我想要的是,如果我选择它的任何列表,光标首先移动到并显示选定的名称和号码,但是当我运行程序时,光标移动到第一个 toast 消息 work.no 联系人姓名和号码。

4

1 回答 1

1

您可以获取联系人 UriContactsContract.Contacts.CONTENT_URI

这是类似的例子:

ContentResolver cr = getContentResolver();
         Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
                 null, null, null, null);
         Log.e("phonenu",""+cur.getCount());
         if (cur.getCount() > 0) 
         {


        while (cur.moveToNext()) 
        {
            String id = cur.getString(
                         cur.getColumnIndex(ContactsContract.Contacts._ID));
        //String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
         //Log.e("contacts", name);
        if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
            //Query phone here.  Covered next
            Cursor pCur = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                    null, 
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                    new String[]{id}, null);
                    while (pCur.moveToNext()) {
                    // Do something with phones
                     name.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
                    number.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));

                    }
                    pCur.close();
        }}}

另一个线程在这里

在这里学习以了解更多信息

于 2012-09-04T04:31:24.863 回答