Android Studio Firebase项目如何上传带用户UID的提现数据
实现步骤
首先确保你的项目已经集成了Firebase Auth身份认证服务,且用户触发提现操作时已经处于登录状态,按以下步骤修改即可:
- 先在当前Activity中声明FirebaseAuth实例,在页面初始化时完成实例化
// 全局声明 private FirebaseAuth mAuth; // 在onCreate方法中初始化 mAuth = FirebaseAuth.getInstance();
- 在提现按钮的点击逻辑中,先获取当前登录用户的UID,再写入HashMap一起上传到Firebase Realtime Database即可。如果当前无登录用户,可以自行补充跳转登录、提示登录的逻辑。
修改后的完整代码如下:
withdrawal.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 先获取当前登录用户 FirebaseUser currentUser = mAuth.getCurrentUser(); if (currentUser == null) { // 此处可补充未登录的提示、跳转登录页逻辑,YourActivity替换为当前页面对应的Activity名 Toast.makeText(YourActivity.this, "请先登录后再申请提现", Toast.LENGTH_SHORT).show(); return; } // 获取用户UID String userId = currentUser.getUid(); HashMap<String,Object> map = new HashMap<>(); map.put("amount",enterbalance.getText().toString()); map.put("paytm",paytm.getText().toString()); map.put("name",name.getText().toString()); map.put("email",emailcard.getText().toString()); map.put("number",altrnbr.getText().toString()); // 新增用户UID字段存入数据库 map.put("userId", userId); FirebaseDatabase.getInstance().getReference().child("PAYTMWITHDRAWAL").push() .setValue(map) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { Log.i("jfbvkj", "onComplete: "); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.i("jfbvkj", "onFailure: "+e.toString()); } }).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.i("jfbvkj", "onSuccess: "); // 此处可补充提现申请提交成功的提示逻辑 Toast.makeText(YourActivity.this, "提现申请已提交", Toast.LENGTH_SHORT).show(); } }); } });
补充优化建议
如果后续你需要查询单个用户的所有提现记录,也可以调整数据库存储结构,把用户UID作为二级节点,存储该用户下的所有提现申请,修改存储路径的示例如下:
// 调整后结构为 PAYTMWITHDRAWAL/用户UID/提现记录ID FirebaseDatabase.getInstance().getReference() .child("PAYTMWITHDRAWAL") .child(userId) .push() .setValue(map)
内容的提问来源于stack exchange,提问作者Prasin Prathap
相关产品推荐
相关产品推荐

