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();      
}
}

次に、リストのいずれかを選択すると、カーソルが最初に移動し、選択した名前と番号が表示されますが、プログラムを実行すると、カーソルが最初にトーストメッセージwork.no連絡先の名前と番号に移動します。

4

1 に答える 1

1

あなたは連絡先ウリを得ることができますContactsContract.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 に答える