我已经实施了firebase。 但是当孩子没有权限应用程序崩溃我正在
Fatal Exception: com.google.firebase.database.d
Firebase Database error: Permission denied
Listener.onCancelled
我的inCancelled看起来像
@Override
public void onCancelled(DatabaseError databaseError) {
try {
Observable.onError(databaseError.toException());
} catch (DatabaseException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}
但仍然崩溃。我怎么能防止这次崩溃
我说如果有人改变儿童的许可是我们的任何方式 可以阻止这次崩溃
答案 0 :(得分:0)
这似乎与您的 google-services.json。
有关确保应用名称和客户端ID 与
如果您不确定从项目控制台重新下载google-services.json并将其添加到您的项目中。
答案 1 :(得分:0)
如果您将监听器附加到用户没有读取权限的位置,Firebase客户端将在该监听器上调用onCancelled
。您当前的代码将此作为例外。
如果您不想提出异常,只需另外处理onCancelled
:
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(
getApplicationContext(),
"You don't have permission to read this data",
Toast.LENGTH_SHORT).show();
}
要意识到的一件重要事情是onCancelled
被调用几乎总是代码中的错误。这不是您的应用程序的用户做错了,而是将监听器附加到错误位置的代码。因此,向用户显示错误可能不是最好的主意。
为简洁起见,您经常会看到我在示例摘录中引发异常。但由于这是我的代码中的一个错误,在实际的应用程序中我喜欢此错误显示在崩溃报告中:
@Override
public void onCancelled(DatabaseError databaseError) {
FirebaseCrash.report(databaseError.toException());
}