gpt4 book ai didi

java - 如何将联系电话发送到 Firebase 数据库?

转载 作者:行者123 更新时间:2023-11-30 10:04:40 26 4
gpt4 key购买 nike

下面有密码。我用 ArrayList 列出目录中的电话号码,并将其发送到 firebase 数据库。我需要为每个电话号码和姓名创建一个单独的 key 。但是我失败了。我用如下代码写了一个数据库。

{
"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();
}
}

最佳答案

你需要有一个像下面这样的类。

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();
}

希望能解决您的问题。

关于java - 如何将联系电话发送到 Firebase 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com