如何检查Firebase应用是否已在Android上初始化

有了以下,第一次它被称为它的工作,但随后失败的后续调用“FirebaseApp名称[DEFAULT]已经存在!”

public FirebaseDatabase conn(Context c) { FirebaseOptions options = new FirebaseOptions.Builder() .setApiKey("key") .setDatabaseUrl("url") .setApplicationId("ID") .build(); /////I tried Try and Catch with no success////// FirebaseApp app = FirebaseApp.initializeApp(c, options); /// for this : FirebaseApp app = FirebaseApp.initializeApp(c, options, "some_app"); //// will fail with "FirebaseApp name some_app already exists!" return FirebaseDatabase.getInstance(app); } 

以上所有都是尝试连接到第二个Firebase应用程序。

Solutions Collecting From Web of "如何检查Firebase应用是否已在Android上初始化"

在firebase网站上,您检查是否已经用以下方式初始化:

 if (!firebase.apps.length) { firebase.initializeApp({}); } 

我想你想要做的是在初始化你的应用程序之前检查正在运行的应用程序列表。 每个SDK都有一个获取这个数组的方法,在android中它是getApps

https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp.html

然后,您可以检查您的应用程序是否已经初始化。

在我的情况下,我刚刚结束了检查数组的长度(我使用JavaScript /networkingSDK,所以我敢肯定它有点不同的Android),并初始化一个新的应用程序,如果它是0。

我面临类似的问题,我解决了如下:

  1. 为应用程序创build一个var,并用null初始化它
  2. 初始化时参考应用程序
  3. 在再次初始化之前检查

 //global variable var firebaseResumeDownloadAdd = null; //inside function check before initializing if(firebaseResumeDownloadAdd==null){ firebaseResumeDownloadAdd = firebase.initializeApp(functions.config().firebase); } 

我面临类似的问题。 我通过删除已经初始化的应用程序解决了以下问题。

  // Access your firebase app let app = firebase.app(); // Delete your app. app.delete(app); 

解决scheme适用于networking。

您可以尝试获取Firebase应用程序实例,在其代码中,firebase会检查它是否已初始化,如果不是,则会引发IllegalStateException

  try{ FirebaseApp.getInstance(); } catch (IllegalStateException e) { //Firebase not initialized automatically, do it manually FirebaseApp.initializeApp(this); }