Получение контактного номера с помощью контент-провайдера в Android - PullRequest
2 голосов
/ 19 марта 2012

Я следовал этому руководству и получил основы контент-провайдеров: http://www.vogella.de/articles/AndroidSQLite/article.html

Но хотел узнать, как я могу получить контактный номер, который хранится против отображаемого имени. пробовал с "ContactsContract.Contacts.CONTENT_VCARD_TYPE". Но получил ошибку.

Пожалуйста, дайте мне знать, если есть какое-либо решение.

Спасибо
Sneha

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Это хороший учебник о том, как получить контактный номер с помощью контент-провайдера в Android

http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/

и

http://www.app -solut.com /blog / 2012/06 / retriever-contact-with-contact-contract /

и может выбрать контактный номер, как это

добавить событие нажатия кнопки, например

button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                i = new Intent(Intent.ACTION_PICK,
                        ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(i, PICK_CONTACT);
            }
        });


//outside button click

public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        switch (reqCode) {
        case (PICK_CONTACT):


            if (resultCode == Activity.RESULT_OK) {
                getContactInfo(data);
            }
        }
    }

    // onActivityResult

    private void getContactInfo(Intent data) {
        // TODO Auto-generated method stub

         ContentResolver cr = getContentResolver();




        Cursor cursor = managedQuery(data.getData(), null, null, null, null);
        while (cursor.moveToNext()) {
            String contactId = cursor.getString(cursor
                    .getColumnIndex(ContactsContract.Contacts._ID));
            Name = cursor
                    .getString(cursor
                            .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

            String hasPhone = cursor
                    .getString(cursor
                            .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

            Cursor emailCur = cr.query( 
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
                    null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
                    new String[]{contactId}, null); 


            emailCur.close();






     if (hasPhone.equalsIgnoreCase("1"))
                hasPhone = "true";
            else
                hasPhone = "false";

            if (Boolean.parseBoolean(hasPhone)) {
                Cursor phones = getContentResolver().query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + " = " + contactId, null, null);
                while (phones.moveToNext()) {
                    phoneNo = phones
                            .getString(phones
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                }
                phones.close();
            }

            pname.setText(Name);
            //
            phno.setText(phoneNo);

        Toast.makeText(this, Name + "   " + phoneNo, Toast.LENGTH_SHORT).show();


        }

    }
1 голос
/ 12 июля 2017

Этот код будет работать для телефонных номеров, а не для электронной почты или чего-то еще.Я нашел этот код проще всего.дайте мне знать, если есть какие-либо проблемы.

начать действие с намерением выбора для типа данных телефона:

findViewById(R.id.choose_contact_button).setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {
                Intent pickContact = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
                startActivityForResult(pickContact, PICK_CONTACT_REQUEST);
          }
     });

Теперь установите onAcitivityResult ();

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent){
        switch (requestCode){
            case PICK_CONTACT_REQUEST:
                if (resultCode == RESULT_OK){
                    Uri contactUri = intent.getData();
                    Cursor nameCursor = getContentResolver().query(contactUri, null, null, null, null);
                    if (nameCursor.moveToFirst()){
                        String name = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                        String number = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        ((EditText)findViewById(R.id.person_name)).setText(name);
                        ((EditText)findViewById(R.id.enter_mobile)).setText(number);
                        nameCursor.close();
                    }
                }
                break;
        }
    }
...