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

Rel*_*elm 41 java android google-api firebase firebase-realtime-database

通过以下内容,第一次调用它时可以正常工作,但随后的"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);
}
Run Code Online (Sandbox Code Playgroud)

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

小智 90

在firebase web上,检查是否已初始化为:

if (!firebase.apps.length) {
    firebase.initializeApp({});
}
Run Code Online (Sandbox Code Playgroud)

  • 很酷,但在 android 中这是不可能的 (2认同)

Jor*_*any 7

您可以尝试获取 Firebase 应用实例,在它的代码中,firebase 检查它是否已初始化,如果未初始化,则抛出IllegalStateException.

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


Nic*_*oso 7

对于那些想知道如何与接受的答案相同的人,在Android中:

if (FirebaseApp.getApps(context).isEmpty()) {
    FirebaseApp.initializeApp(context);
}
Run Code Online (Sandbox Code Playgroud)

在有工具的测试环境中,请使用以下上下文:

InstrumentationRegistry.getContext()
Run Code Online (Sandbox Code Playgroud)


Nit*_*tin 7

在 v9 中,Firebase 已模块化以实现更好的摇树。所以我们不能再导入整个应用程序并检查apps属性 AFAIK。可以使用以下方法代替。

import { initializeApp, getApps, getApp } from "firebase/app";
getApps().length === 0 ? initializeApp(firebaseConfig) : getApp();
Run Code Online (Sandbox Code Playgroud)

https://firebase.google.com/docs/reference/js/v9/app.md#getapps文档


KCE*_*KCE 6

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

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

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

在我的情况下,我最终检查了数组的长度(我使用的是 javascript / web sdk,所以我确定它对于 Android 有点不同)并在它为 0 时初始化一个新应用程序。


Max*_* Ma 5

Firebase 版本 9

import { initializeApp, getApp } from "firebase/app";

const createFirebaseApp = (config = {}) => {
  try {
    return getApp();
  } catch () {
    return initializeApp(config);
  }
};

const firebaseApp = createFirebaseApp({/* your config */})
Run Code Online (Sandbox Code Playgroud)