Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从firebase数据库中获取数据:它似乎仅toast,但未保存在firebase数据库中_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 从firebase数据库中获取数据:它似乎仅toast,但未保存在firebase数据库中

Android 从firebase数据库中获取数据:它似乎仅toast,但未保存在firebase数据库中,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,您好,我正在开发一个应用程序,以便在我实现应用程序时将联系人提取到我的应用程序中,我正在接收该应用程序以toast所有联系人,但联系人不会进入Firebase数据库。我试了很多次,但还是不能储存在firebase中。为了检查它,我试着去烤面包,它得到了所有的列表,但没有存储。 下面是代码 public ProgressDialog dialog; public DatabaseReference db; @Override protected void onCreate(Bundle

您好,我正在开发一个应用程序,以便在我实现应用程序时将联系人提取到我的应用程序中,我正在接收该应用程序以toast所有联系人,但联系人不会进入Firebase数据库。我试了很多次,但还是不能储存在firebase中。为了检查它,我试着去烤面包,它得到了所有的列表,但没有存储。 下面是代码

public ProgressDialog dialog;
public DatabaseReference db; 




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    db = FirebaseDatabase.getInstance().getReference().child("contact-fetch-firebase");
    setContentView(R.layout.activity_main);
    dialog = new ProgressDialog(this);
    dialog.setMessage("Uploading contacts...");


    Cursor contacts = getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,new String[]{
                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Phone.NUMBER
            },
            null,
            null,
            null
    );


    HashMap<String,Object> map = new HashMap<>();

    if(contacts!=null) {
        while(contacts.moveToNext()){
            map.put(
                    contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)),
                    contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
            );
        }
        contacts.close();
    }

    dialog.show();


    Iterator i = map.keySet().iterator();
    while(i.hasNext()) {
        String key=(String)i.next();
        Object value=(Object) map.get(key);



                Toast.makeText(getBaseContext(), "Name: " + key + " Contact Number: " + value, Toast.LENGTH_LONG).show();
            }


    db.updateChildren(map)

            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    String key = db.child("user").push().getKey();
                    String value = db.child("key").push().getKey();

                    dialog.dismiss();
                    Toast.makeText(MainActivity.this, "Contacts uploaded successfully!", Toast.LENGTH_SHORT).show();
                }
            })

            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    dialog.dismiss();
                    Log.w("MKN","Error: "+e.getMessage());
                    Toast.makeText(MainActivity.this, "Contacts upload failed.", Toast.LENGTH_SHORT).show();
                }
            });


        }


    }
公共进程对话框;
公共数据库参考数据库;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FirebaseApp.initializeApp(本);
db=FirebaseDatabase.getInstance().getReference().child(“联系获取firebase”);
setContentView(R.layout.activity_main);
dialog=新建ProgressDialog(此);
设置消息(“上传联系人…”);
游标联系人=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,新字符串[]{
Contacts contract.CommonDataTypes.Phone.DISPLAY\u NAME,
Contacts contract.CommonDataTypes.Phone.NUMBER
},
无效的
无效的
无效的
);
HashMap=newHashMap();
如果(联系人!=null){
while(contacts.moveToNext()){
地图放置(
contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME)),
contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER))
);
}
contacts.close();
}
dialog.show();
迭代器i=map.keySet().Iterator();
while(i.hasNext()){
字符串键=(字符串)i.next();
对象值=(对象)map.get(键);
Toast.makeText(getBaseContext(),“Name:+key+”联系人号码:“+value,Toast.LENGTH_LONG).show();
}
db.updateChildren(地图)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
String key=db.child(“用户”).push().getKey();
字符串值=db.child(“key”).push().getKey();
dialog.dismise();
Toast.makeText(MainActivity.this,“联系人已成功上载!”,Toast.LENGTH_SHORT.show();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
dialog.dismise();
Log.w(“MKN”,“Error:+e.getMessage());
Toast.makeText(MainActivity.this,“联系人上载失败”,Toast.LENGTH_SHORT.show();
}
});
}
}
试试这种方法-

Iterator i = map.keySet().iterator();
while(i.hasNext()) {
    String key=(String)i.next();
    Object value=(Object) map.get(key);

     db.updateChildren(map)
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                String key = db.child("user").push().getKey();
                String value = db.child("key").push().getKey();

                dialog.dismiss();
                Toast.makeText(MainActivity.this, "Contacts uploaded successfully!", Toast.LENGTH_SHORT).show();
            }
        })

        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w("MKN","Error: "+e.getException());
            }
        });
}
Iterator i=map.keySet().Iterator();
while(i.hasNext()){
字符串键=(字符串)i.next();
对象值=(对象)map.get(键);
db.updateChildren(地图)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
String key=db.child(“用户”).push().getKey();
字符串值=db.child(“key”).push().getKey();
dialog.dismise();
Toast.makeText(MainActivity.this,“联系人已成功上载!”,Toast.LENGTH_SHORT.show();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Log.w(“MKN”,“Error:+e.getException());
}
});
}

首先要考虑的是更改数据库的身份验证规则,

以下规则仅允许经过身份验证的用户读取或写入数据

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}
下面的规则允许每个人在没有身份验证的情况下读写数据

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

“联系人上传成功!”吐司显示?是否“联系人上传成功!”吐司显示?--NOso是否显示失败?是的,它显示“联系人上载失败”测试您是否检查了失败引发的异常??它显示上载联系人以及从firebase控制台加载很长时间后显示结构contact fetch firebase-users user:-“user”此日志打印什么-Log.w(“MKN”,“Error:+e.getException())); (在onFailure()方法中)。我不知道确切地说我在stackoverflow post中使用了它somewhere@Yash你怎么不知道
Log.w
做什么?它基本上会向设备的logcat记录警告。这可以通过点击Android Studio底部的“Logcat”选项卡来阅读。(P.S.考虑阅读代码和/或文档来查看某个特定函数所做的事情)。我已经改变了它,使它应用了“{规则”:{“.Read”):true,“写”:true }尝试检查文档中给出的所有步骤: