Дублирование документов в коллекции моего проекта Firestore - PullRequest
0 голосов
/ 22 января 2019

Я связал свое приложение с пожарным магазином. Каждый раз, когда приложение запускается, все контакты дублируются внутри коллекции, даже если значения контакта совпадают. Однако в представлении списка контакты были переопределены. Я хочу синхронизировать все контакты из другого приложения, которое подключается к той же самой базе данных Firestore, если по ошибке в моем приложении контакт был удален.

 if (cursor.getCount() > 0) {
                    while (cursor.moveToNext()) {
                        ContactModel cm = new ContactModel();
                        cm.id = cursor.getString(cursor.getColumnIndex(_ID));
                        cm.names = cursor.getString(cursor.getColumnIndex(DISPLAY_NAME));
                        int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(HAS_PHONE_NUMBER)));
                        if (hasPhoneNumber > 0) {

                            Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?", new String[]{cm.id}, null);


                            while (phoneCursor.moveToNext()) {
                                phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
                                cm.mobileNumber = phoneNumber;


                            }
                            phoneCursor.close();
                            Map<String, Object> contactList = new HashMap<>();
                            contactList.put("contact_id", cm.id);
                            contactList.put("contact_name", cm.names);
                            contactList.put("contact_mobileNumber", cm.mobileNumber);
                            db.collection("Contacts").add(contactList);


                        }
                        contacts.add(cm);


                    }

                    cursor.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
            return contacts;

    }

1 Ответ

0 голосов
/ 22 января 2019

Я только сейчас решил проблему. Просто поместите вызов определенного метода, в котором вы загрузили все контакты в базу данных в onRequestPermissionsResult() вместо onCreate().

public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults) {
        if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                loadContactList();
                loadListView();
                loadContactsIntoDb();
            } else {
                Toast.makeText(this, "Until you grant the permission, we canot display the list", Toast.LENGTH_SHORT).show();
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...