【发布时间】:2020-07-07 10:43:15
【问题描述】:
我的应用从我的 Firebase 数据库中检索数据。检索到的数据在 TextView 中查看。在检索 TextView 之前只显示提示(此处为用户名)。
在 Firebase 数据库中编写规则时,我将“.read”和“.write”都设置为 FALSE。这意味着没有人可以访问数据。
但是我的 TextView 仍然显示提示。如何在应用程序中获得拒绝访问的响应,以便我可以创建一个声明访问被拒绝的弹出窗口。
有什么方法可以得到这样的确认?
{
"rules": {
".read": false,
".write": false
}
}
所以当我的规则如上。 输出是:
但是当我将规则更改为
{
"rules": {
".read": false,
".write": false
}
}
输出是:
所以用户认为他的现金仍在加载,但我想向他显示一个拒绝访问的错误。有什么办法吗?
我的代码:
String cashOwnValue = "start";
try {
cashOwnValue = dataSnapshot.child("startCash").getValue().toString();
} catch (Throwable e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
cashValue.setText(cashOwnValue);
Toast.makeText(getApplicationContext(), "Your balance has changed.", Toast.LENGTH_SHORT).show();
编辑: 当访问被拒绝时,要让用户知道他的请求已被拒绝,您必须编写以下代码:
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "Access Denied", Toast.LENGTH_LONG).show();
}
为了避免在未找到用户数据时应用崩溃,您可以使用 try-catch 块,如下所述。 (这也需要与@PrajwalW 进行长时间的讨论才能解决)。
【问题讨论】:
-
在此处粘贴您的 fb 规则逻辑。另外,只需将您的写入设置为 FALSE 并将读取设置为 True...
-
另外,你可以做一个快速逻辑,如果 fb rtdb 对象值为空,则显示一个弹出窗口。
-
请编辑问题以显示所有相关规则,以及执行未按预期方式运行的查询的代码。我们应该能够根据您提供的内容复制问题。
-
@PrajwalW 我添加了规则和截图。
-
参考我的 cmets 你会得到答案..
标签: android firebase firebase-realtime-database firebase-security