我那里有一个密码。我使用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();
}
}
答案 0 :(得分: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();
}
希望能解决您的问题。