Would someone please help me with what would be the synchronization of mobile contacts with my application? I manage to obtain them through a code, but it turns out that they are repeated, so I see this is given by whatsapp, etc. Because I try on another device that does not have whatsapp or other similar installed, these contacts do not repeat ... the code with what I do this is:
public void ObtenerDatos() {
int permissionCheck = ContextCompat.checkSelfPermission(
this, Manifest.permission.READ_CONTACTS);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
Log.i("Mensaje", "No se tiene permiso para realizar llamadas telefónicas.");
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, 225);
} else {
Log.i("Mensaje", "Se tiene permiso para realizar llamadas!");
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
// Se tiene permiso
String[] projeccion = new String[]{ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
String selectionClause = ContactsContract.Data.MIMETYPE + "='" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND "
+ ContactsContract.CommonDataKinds.Phone.NUMBER + " IS NOT NULL";
String sortOrder = ContactsContract.Data.DISPLAY_NAME + " ASC";
Cursor c = getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
projeccion,
selectionClause,
null,
sortOrder);
txtnombre.setText("");
while (c.moveToNext()) {
txtnombre.append(" Nombre: " + c.getString(0) + " Número: " + c.getString(1) + "\n");
}
c.close();
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS);
return;
}
} else {
// No se necesita requerir permiso OS menos a 6.0.
}
}
As I said it works well, only when there is whatsapp, telegram or other similar service are repeated ...