ver vea una solo quiero que poner persona perfil para otro las hago hacer fotos contactos contacto como cambiar android whatsapp android-contentresolver

android - vea - ¿Quiero obtener el perfil de WhatsApp pero solo obtener nombre y número de contacto?



ver mi perfil de whatsapp (1)

En primer lugar, solo quiero reiterar la diferencia entre un RawContact y un Contact . La última es una agregación (que representa a una persona) de la primera (que representa una cuenta).

Según el uso que tenga para la imagen, puede ser mejor obtener el Contacto agregado y usar la imagen de Perfil seleccionada allí, que se puede lograr a través del contrato de Fotos .

Uri photoUri; Cursor photoCur = cr.query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + aggregateContactId + " AND " + ContactsContract.Data.MIMETYPE + "=''" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "''", null, null ); if (photoCur != null && photoCur.moveToFirst()) { Uri photoId = ContentUris.withAppendedId(Contacts.CONTENT_URI, aggregateContactId); photoUri = Uri.withAppendedPath(person, Contacts.Photo.CONTENT_DIRECTORY); }

Si tiene un uso específico para la foto de WhatsApp, primero asegúrese de que la foto esté guardada en la memoria caché del dispositivo (solo para evitar falsas banderas durante la prueba; abra la imagen completa de los contactos en WhatsApp y puede estar seguro de que está guardada en la caché), entonces tendrá que hacer una búsqueda por separado para la imagen (de API 14):

Uri photoId = ContentUris.withAppendedId(RawContacts.CONTENT_URI, whatsappContactId); Uri photoUri = Uri.withAppendedPath(photoId, RawContacts.DisplayPhoto.CONTENT_DIRECTORY);

Quiero obtener la imagen y el número de perfil de WhatsApp pero al usar contentResolver, solo obtendré el nombre y el número usando el siguiente código de fragmento.

private void showContactWhatsApp(){ ContentResolver cr = getContentResolver(); Cursor contactCursor = cr.query( ContactsContract.RawContacts.CONTENT_URI, new String[]{ContactsContract.RawContacts._ID, ContactsContract.RawContacts.CONTACT_ID}, ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?", new String[]{"com.whatsapp"}, null); ArrayList<String> myWhatsappContacts = new ArrayList<>(); if (contactCursor != null) { if (contactCursor.getCount() > 0) { if (contactCursor.moveToFirst()) { do { //whatsappContactId for get Number,Name,Id ect... from ContactsContract.CommonDataKinds.Phone String whatsappContactId = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID)); if (whatsappContactId != null) { //Get Data from ContactsContract.CommonDataKinds.Phone of Specific CONTACT_ID Cursor whatsAppContactCursor = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{whatsappContactId}, null); if (whatsAppContactCursor != null) { whatsAppContactCursor.moveToFirst(); String id = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)); String name = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); whatsAppContactCursor.close(); //Add Number to ArrayList myWhatsappContacts.add(number); Log.e(TAG, " WhatsApp contact id : " + id); Log.e(TAG, " WhatsApp contact name : " + name); Log.e(TAG, " WhatsApp contact number : " + number); } } } while (contactCursor.moveToNext()); contactCursor.close(); } } } Log.e(TAG, " WhatsApp contact size : " + myWhatsappContacts.size()); }

Quiero obtener la imagen de perfil de WhatsApp como la aplicación SyncMe.

Espero para obtener la lista de contactos de WhatsApp con nombre, número y miniatura.