telefonicos tarjeta sincronizar sim pasar mis importar guardar guardados google descargar contactos como abrir android android-contacts

tarjeta - importar contactos android



Selector de contactos de Android con solo números de teléfono (2)

Sobre la base de la respuesta de Akash.

Paso 1 : es necesario agregar permisos de contacto de lectura / escritura en Manifest.

<uses-permission android:name="android.permission.READ_CONTACTS"/> <!-- OR - depends on the requiremnts--> <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

Paso 2 : luego debe iniciar el intento del selector de contactos, pero antes debe verificar si se ha otorgado el permiso de contacto (solo para Android> = 23)

if (hasPermissions(Manifest.permission.READ_CONTACTS)) { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(intent, REQUEST_PICK_CONTACT); } else { // Request Permissions }

Paso 3 - luego necesita obtener el resultado de la actividad

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_PICK_CONTACT) { String phoneNo = null; String name = null; Uri uri = data.getData(); Cursor cursor = getActivity().getContentResolver().query(uri, null, null, null, null); if (cursor.moveToFirst()) { int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); phoneNo = cursor.getString(phoneIndex); name = cursor.getString(nameIndex); Log.e("onActivityResult()", phoneIndex + " " + phoneNo + " " + nameIndex + " " + name); } cursor.close(); } }

Y sí, eso es todo.

Descubrí en SO que para iniciar una versión filtrada del selector de contactos (que solo muestra los contactos que tienen números de teléfono), puedo usar esto:

Intent pickContactIntent = new Intent( Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI ); pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(pickContactIntent, CONTACT_PICKER_RESULT);

Así que esto funciona. Estoy intentando averiguar cómo recuperar el nombre y el número de teléfono del contacto seleccionado ahora, dentro del método onActivityResult:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // what goes here... }

He intentado varias cosas diferentes en onActivityResult, pero las consultas no devuelven el número.


Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(intent, 1); String phoneNo = null; Uri uri = data.getData(); Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor.moveToFirst()) { int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); phoneNo = cursor.getString(phoneIndex); } curosr.close();