1

アプリケーションを作成したところ、ボタンを押して選択した番号を取得すると、電話の連絡先を取得できました。

私の問題は、電話の連絡先しか表示されず、SIM の連絡先が表示されないことです。

私のコードは次のとおりです。

@Override
    public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);
        if (resultCode!=0){
             Uri uri = data.getData();
             Cursor cursor=this.getContentResolver().query(uri, null, null, null, null);

                while (cursor.moveToNext()) { 
                String contactId = cursor.getString(cursor.getColumnIndex( 
                  ContactsContract.Contacts._ID)); 
                String hasPhone = cursor.getString(cursor.getColumnIndex( 
                  ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
                if ((Integer.parseInt(cursor.getString( cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)) { 
                             // You know have the number so now query it like this
             Cursor phones = getContentResolver().query( 
               ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
               null, 
               ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
                   null, null); 
                 while (phones.moveToNext()) { 

                  phoneNumber = phones.getString( 
                   phones.getColumnIndex( 
                      ContactsContract.CommonDataKinds.Phone.NUMBER));

                 } 
                 phonenumber.setText(phoneNumber);

                 phones.close(); 
                } 
              }

        }


    }

そして、私が理解できない何か。

インテント インテント = 新しいインテント(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivity(意図);

すべての連絡先を表示しますが、1つを選択できず、結果を得ることができません

インテント インテント = 新しいインテント(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(意図、1);

電話の連絡先のみを表示するのはなぜですか?

4

1 に答える 1

0

これをあなたの意図に追加してください:

intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);

他のすべては問題ありません。

于 2015-05-19T06:38:19.270 に答える