Android 联系人获取详细信息失败,正在将联系人获取到Firebase数据库

Android 联系人获取详细信息失败,正在将联系人获取到Firebase数据库,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想将个人用户的联系人提取到Firebase数据库 我参考了这篇文章 我声明它可以将联系人发送到Firebase数据库,即使它发送到也无法获取联系人我还在清单中声明了Internet的权限,设置Firebase控制台以允许它写入Firebase数据库以及添加的Firebase数据库跟踪代码是代码 public class MainActivity extends AppCompatActivity { ProgressDialog dialog; DatabaseReference

我想将个人用户的联系人提取到Firebase数据库 我参考了这篇文章 我声明它可以将联系人发送到Firebase数据库,即使它发送到也无法获取联系人我还在清单中声明了Internet的权限,设置Firebase控制台以允许它写入Firebase数据库以及添加的Firebase数据库跟踪代码是代码

    public class MainActivity extends AppCompatActivity {

ProgressDialog dialog;

DatabaseReference yourReference;  

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    yourReference = FirebaseDatabase.getInstance().getReference().child("users");
    setContentView(R.layout.activity_your);
    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();

    yourReference.updateChildren(map)

            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    dialog.dismiss();
                    Toast.makeText(YourActivity.this, "Contacts uploaded suffessfully!", Toast.LENGTH_SHORT).show();
                }
            })

    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            dialog.dismiss();
            Log.w("MKN","Error: "+e.getMessage());
            Toast.makeText(YourActivity.this, "Contacts upload failed.", Toast.LENGTH_SHORT).show();
        }
    });
}
}
public类MainActivity扩展了AppCompatActivity{
进程对话;
数据库参考;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
yourReference=FirebaseDatabase.getInstance().getReference().child(“用户”);
setContentView(R.layout.activity_您的);
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();
yourReference.updateChildren(地图)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
dialog.dismise();
Toast.makeText(YourActivity.this,“联系人上传失败!”,Toast.LENGTH_SHORT.show();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
dialog.dismise();
Log.w(“MKN”,“Error:+e.getMessage());
Toast.makeText(YourActivity.this,“联系人上载失败”,Toast.LENGTH_SHORT.show();
}
});
}
}

您的代码似乎都没有从数据库中读取。@Frank van Puffelen我想将其存储在Firebase数据库中OK。你的代码有什么问题吗?几秒钟后就会显示正在上传联系人。。。几分钟后显示Contacts upload Failed这意味着您的logcat输出应该包含来自
e.getMessage()
的错误消息。