0

以下のコードで電話番号を取得しようとしていますが、番号をEditTextフィールドに設定してもうまくいかないようです。

のコードはonActivityResult()、選択した連絡先から連絡先の名前を教えてくれません。

EditText number;

public void chooseContact(View v) {

        contact = (ImageView) findViewById(R.id.quickContact);
        contact.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
                startActivityForResult(intent, PICK_CONTACT);

            }
        });

        // Toast.makeText(getApplicationContext(), "hi contact is selected!!",
        // Toast.LENGTH_SHORT).show();
    }

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

        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            ContentResolver cr = getContentResolver();
            Uri contactData = data.getData();
            Cursor c = getContentResolver().query(contactData, null, null,
                    null, null);
            if (c.moveToFirst()) {
                id = c.getString(c
                        .getColumnIndex(ContactsContract.Contacts._ID));
                name = c.getString(c
                        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                if (Integer
                        .parseInt(c.getString(c
                                .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    Cursor pCur = cr.query(Phone.CONTENT_URI, null,
                            Phone.CONTACT_ID + " = ?", new String[] { id },
                            null);

                    while (pCur.moveToNext()) {
                        cnumber = pCur.getString(pCur
                                .getColumnIndex(Phone.NUMBER));
                        // Toast.makeText(getApplicationContext(), cnumber,
                        // Toast.LENGTH_SHORT).show();
                        number.setText(cnumber);
                    }

                }

            }
        }

    }
4

3 に答える 3

1

試す

number.setText(cnumber+"");

また

number.setText(String.valueOf(cnumber));

アップデート:

ロジックを変更する

int i = 0;
while (pCur.moveToNext()) {
                    cnumber = pCur.getString(pCur
                            .getColumnIndex(Phone.NUMBER));
                    // Toast.makeText(getApplicationContext(), cnumber,
                    // Toast.LENGTH_SHORT).show();
                    if(i == 0){
                    number.setText(cnumber);
                    break;
                    }
               }

ここ。このループは編集テキストにのみ最後の番号を設定するためnumberです。

于 2013-05-15T13:36:02.560 に答える
0

EditTextコード内に が見つかりませんでしnumber = findViewById(R.id.edittext)た。見つけて実行してみてください。

于 2013-05-15T13:41:09.703 に答える
-1

エラーも表示しています。だから、解決するには -

1.

id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
//Instead of this place String keyword at starting.

2.

cnumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//Place String keyword at starting.            

3.

name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//Place String keyword at starting.
于 2017-01-06T11:08:38.720 に答える