Нужна помощь о том, как использовать onActivityResult () на классе адаптера? - PullRequest
0 голосов
/ 27 мая 2019

Я пытался вернуть номер телефона из списка контактов на моем классе адаптера, когда я использую super.onActivityResult(requestCode, resultCode, data); Я получил ошибку.

btnContactGift.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_PICK, 
ContactsContract.Contacts.CONTENT_URI);
                // Show only contacts with phone numbers

intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
                // Start the Contacts activity
                context.startActivityForResult(intent, PICK_CONTACT);

            }
        });





public void onActivityResult(int requestCode, int resultCode, Intent data) {

 super.onActivityResult(requestCode, resultCode, data);


    switch (requestCode) {
        case PICK_CONTACT :
            if (resultCode == Activity.RESULT_OK) {
                Uri contactData = data.getData();
String[] projection = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Photo.PHOTO_THUMBNAIL_URI};
Cursor c = conR.query(contactData, projection, null, null, null);
                c.moveToFirst();
int nameIdx =c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int phoneNumberIdx =c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int photoIdx = c.getColumnIndex(ContactsContract.CommonDataKinds.Photo.PHOTO_THUMBNAIL_URI);
                String name = c.getString(nameIdx);
                String phoneNumber = c.getString(phoneNumberIdx);
                String photo = c.getString(photoIdx);
                if (name == null) {
                    name = "No Name";
                }
                String nwPhone = phoneNumber.replace("+251", "0");

                edtPhoneGift.setText(nwPhone);
                c.close();

                // Now you have the phone number

            }
            break;
    }
 }

Не удается разрешить метод onActivityResult (int, int, Intent)

Ответы [ 2 ]

1 голос
/ 27 мая 2019

onActivityResult() должно быть реализовано для действия или фрагмента, для которого вы вызываете startActivityForResult(). В вашем случае это будет любая активность или фрагмент, идентифицируемый context (из context.startActivityForResult(intent, PICK_CONTACT)).

0 голосов
/ 27 мая 2019

Просто удалите вызов супер super.onActivityResult(requestCode, resultCode, data), вам это не нужно.

Кроме того, вам нужно изменить ContactsContract.CommonDataKinds.Photo.PHOTO_THUMBNAIL_URI в вашей проекции на что-то другое, вы можете получить Photo.XXX поля из Uri, возвращенные из намерения Phone Picker, только столбцы в Phone.XXX или неявно присоединенные к нему , вместо этого вы можете попробовать Contacts.PHOTO_ID.

...