[英]How do i send contact numbers to the Firebase database?
我在那里有一个代码。 我使用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();
}
}
你需要有一个像下面这样的类。
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();
}
希望能解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.