如何从 Android 应用程序连接到多个 Firebase 数据库

Posted

技术标签:

【中文标题】如何从 Android 应用程序连接到多个 Firebase 数据库【英文标题】:How to connect to more than one firebase database from an android App 【发布时间】:2016-10-04 17:22:00 【问题描述】:

我正在尝试在 Firebase 中创建一个项目,该项目将负责所有应用程序的共同事情。

也就是说,我想创建应用程序,然后让这些应用程序访问项目的特定 Firebase 数据库。

查看 Firebase android 文档,我找不到使用以下方法将数据发送到另一个项目中的另一个 firebase 数据库的方法,但参考是另一个项目。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("example");
        ref.push().setValue(d).addOnCompleteListener(new OnCompleteListener<Void>() 
            @Override
            public void onComplete(@NonNull Task<Void> task) 
                finish();
            
        );

【问题讨论】:

据我了解,您是否尝试从您的 android 代码本身创建一个新的 Firebase 项目? 不,将信息添加到另一个数据库,而不是当前为 android 应用程序配置的数据库。 然后只需使用另一个应用程序的firebase Url并向其添加信息。 你能举个例子吗?配置数据库详细信息。 【参考方案1】:

您需要在代码中使用显式选项初始化第二个 FirebaseApp 对象:

FirebaseOptions options = new FirebaseOptions.Builder()
        .setApiKey("AI...j0")
        .setApplicationId("1:5...e0")
        .setDatabaseUrl("https://myapp.firebaseio.com")
        .build();
FirebaseApp secondApp = FirebaseApp.initializeApp(getApplicationContext(), options, "second app");
FirebaseDatabase secondDatabase = FirebaseDatabase.getInstance(secondApp);
secondDatabase.getReference().setValue(ServerValue.TIMESTAMP);

我从第二个项目的 google-services.json 中获得了配置值。 API 密钥位于名为 api_key 的属性下,应用程序 ID 来自名为 mobilesdk_app_id 的属性,数据库 URL 来自名为 firebase_url 的属性。

另请参阅using multiple projects in your application 上的文档。

【讨论】:

应用粉碎。 “FirebaseApp 名称 [DEFAULT] 已存在!” 很抱歉。我将添加第二个“猜测”。如果还是不行,我就退出 Android Studio。 我通常通过将应用程序放在单个活动或内容提供程序中来确保只初始化一次应用程序。但如果你想检查,你可以使用for (FirebaseApp app: FirebaseApp.getApps(getApplicationContext())) ...FirebaseApp.getInstance("secondApp") == null 循环遍历应用程序 我把它放在一个 try catch 中。试试 FirebaseApp app = FirebaseApp.initializeApp(c, options, "app");返回 FirebaseDatabase.getInstance(app); catch (IllegalStateException e) return FirebaseDatabase.getInstance(FirebaseApp.getInstance("app")); ///这行得通。 @FrankvanPuffelen 先生,但是身份验证呢,我的意思是,如果我想通过电子邮件/通行证从第二个应用程序将用户注册到 firstApp 的数据库中?我可以这样使用它吗: FirebaseAuth auth = FirebaseAuth.getInstance(secondApp); ?

以上是关于如何从 Android 应用程序连接到多个 Firebase 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Socket Programming 连接 Android 设备?

如何从android设备连接到sql server数据库

如何从 Android 应用程序通过 JDBC 连接到远程 MySQL 服务器

如何在 Android 中使用 MVC 模式从 firebase 检索数据? [复制]

Android 10 / API 29:如何将手机连接到配置的网络?

如何从不同网络上的android连接到本地apache服务器?(端口转发)