Как отправить контактные номера в базу данных Firebase?

1

У меня там есть код. Я перечисляю номера телефонов в каталоге с ArrayList и отправляю их в базу данных Firebase. Мне нужно создать отдельный ключ для каждого номера телефона и имени. Но я потерпел неудачу. Я пишу базу данных с кодом следующим образом.

{
  "ContactPhoneNumbers" : {
    "-LcxMT5-D4KvWi3ZbFyi" : {
      "-LcxMT5-D4KvWi3ZbFyi" : {
        "name" : [ "ambulance", "police" ],
        "phone" : [ "112", "155" ]
      }
    }
  }
}

Я буду использовать эту базу данных позже в приложении. Но так не должно быть. Я пишу базу данных, которую хочу создать вручную. Это должно быть так.

{
  "ContactPhoneNumbers" : {
    "-LcaH_gtgarJwbY5-C08" : {
      "LcaH_gtgarAU54FU-C08" : {
        "name" : "police",
        "phone" : 155
      },
      "LcaH_gtgayuUU154TY" : {
        "name" : "ambulance",
        "phone" : 112
      }
    }
  }
}

Я хочу создать собственный ключ для каждого номера телефона и имени. Могу ли я сделать это с моим кодом ниже? Я был бы признателен, если бы вы могли помочь.

Вот UserPermissionActivity.

public class UserPermissionActivity extends AppCompatActivity {

    Cursor cursor;
    ArrayList<String> contacts,contacts2;

    private DatabaseReference mDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_permission);

        FirebaseApp.initializeApp(this);
        mDatabase = FirebaseDatabase.getInstance().getReference();

        saveContacts();
     }

    private void saveContacts() {

        final String key =  mDatabase.push().getKey();

        cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");

        contacts = new ArrayList<String>();
        contacts2 = new ArrayList<String>();

        while (cursor.moveToNext()){
            contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            contacts.add(contactName);
            contacts2.add(phoneNumber);

            mDatabase.child("ContactPhoneNumbers").child(key).child(key).child("name").setValue(contacts);
            mDatabase.child("ContactPhoneNumbers").child(key).child(key).child("phone").setValue(contacts2);
        }

        cursor.close();
    }
}
Теги:
firebase-realtime-database

1 ответ

0

Вы должны иметь класс, подобный следующему.

public class User {

    public String name;
    public String phone;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }
}

Теперь вы можете рассмотреть возможность объявления функции, подобной следующей.

private void writeNewUser(String name, String phone) {
    final String key =  mDatabase.push().getKey();
    User user = new User(name, phone);
    mDatabase.child("ContactPhoneNumbers").child(key).setValue(user);
}

Затем вызовите эту функцию, пока вы сохраняете свои контакты.

private void saveContacts() {
    cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,
    ContactsContract.Contacts.DISPLAY_NAME + " ASC");

    while (cursor.moveToNext()){
        String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

        // Call the function here
        writeNewUser(contactName, phoneNumber);
    }

    cursor.close();
}

Надеюсь, что это решит вашу проблему.

  • 0
    Большое спасибо за ваш ответ. Я также создал пользовательский класс в своих эссе. Но так как я был новичком, я не знал, как позвонить. Ваш ответ был очень полезным. Еще раз спасибо, что нашли время.
  • 0
    Нет проблем. Приятно слышать, что я могу помочь! Добро пожаловать в StackOverflow. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню