Android Firebase权限被拒绝崩溃

Android Firebase权限被拒绝崩溃,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我已经实现了firebase。 但当孩子没有权限应用程序崩溃时,我会 Fatal Exception: com.google.firebase.database.d Firebase Database error: Permission denied Listener.onCancelled 而我的白炽灯看起来像 @Override public void onCancelled(DatabaseError databaseError) { try { Obser

我已经实现了firebase。 但当孩子没有权限应用程序崩溃时,我会

Fatal Exception: com.google.firebase.database.d
 Firebase Database error: Permission denied
  Listener.onCancelled
而我的白炽灯看起来像

@Override
public void onCancelled(DatabaseError databaseError) {
    try {
        Observable.onError(databaseError.toException());
    } catch (DatabaseException e) {
        e.printStackTrace();
    }catch (Exception e){
        e.printStackTrace();
    }
}
但它还是崩溃了。我怎样才能防止这次撞车

我是说,如果有人改变孩子的权限,我们就可以
可以阻止此崩溃

这看起来像是您的google services.json有问题。

确保应用程序名称客户端id与firebase控制台中的相同


如果您不确定是否从项目控制台重新下载google-services.json并将其添加到项目中。

如果将侦听器附加到用户没有读取权限的位置,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());
}

能否提供更详细的异常日志?请检查您在Firebase控制台内设置的权限。@koceeng致命异常:com.google.Firebase.database.d Firebase数据库错误:权限被拒绝原始文本com.google.Firebase.database.DatabaseError.toException(未知源)@SrikarReddy我是说,如果我们给出了错误的许可,我们如何才能阻止崩溃?您试图读取您无权访问的数据。这是引发此异常的唯一原因。如果不清楚是什么原因造成的,请分享。我得到了回复,但我的问题是我们可以处理的任何方法。如果我删除了并且应用程序处于活动状态,我有什么方法可以防止崩溃?可能你会崩溃或没有响应我会崩溃吗?规则很重要,但这没有帮助。即使实施了onCancelled,仍会偶尔发生崩溃。