无法让 Android 应用连接到 Firebase

Posted

技术标签:

【中文标题】无法让 Android 应用连接到 Firebase【英文标题】:Cannot get Android app to connect to Firebase 【发布时间】:2013-07-08 11:20:19 【问题描述】:

所以我已经尝试了 3 次,但未能成功创建一个与 Firebase 通信的 android 应用程序。就像the tutorial 所做的那样简单,我不禁认为我或它(很可能是前者)缺少了一些东西。

我正在制作的示例应用程序仅包含一个 TextView,应在 https://dummy-firebase.firebaseio.com/ 对我的 Firebase 进行任何更改(因为我无法创建公共 Firebase,如果您愿意,可以粘贴你自己的firebase来测试代码)。以下是 Firebase 上的快照:

这是我唯一的 Activity 的 onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Firebase f = new Firebase("https://dummy-firebase.firebaseio.com");
    f.addValueEventListener(new ValueEventListener() 

        @Override
        public void onDataChange(DataSnapshot arg0) 
            TextView textViewSample = (TextView) findViewById(R.id.sampleTextView);
            textViewSample.setText(arg0.getValue(String.class));
        

        @Override
        public void onCancelled() 
            // TODO Auto-generated method stub
        
    );

这是唯一的 XML 文件,activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/sampleTextView"
    android:layout_
    android:layout_
    android:text="@string/hello_world" />

这是清单的图片,因此您可以清楚地看到 INTERNET 权限:

现在,当我从浏览器更改 Firebase 上的数据时,我相信 TextView 中的数据应该会更新。这没有发生,我在之前的 Firebase Android 项目尝试中尝试使用 EditTexts 和 Buttons 放置数据但未成功。

提前感谢您抽出宝贵时间查看此问题。由于 Firebase 的设置似乎很简单(并且适用于 javascript 版本),我真的很困惑我做错了什么!

谢谢!!

【问题讨论】:

顺便说一句,我通过 Eclipse 在物理 2.2 设备(不是模拟器)上运行它,并且设备的互联网连接很好。 (在 Wi-Fi 和 3G 上都进行了测试)。谢谢 您能否尝试其中一个示例应用程序,看看它们是否可以在您的设备上运行?这会让我们知道您的项目是否存在问题,或者 Android SDK 是否存在问题(完全有可能,SDK 是新的并且处于测试阶段)。您应该可以直接在您的设备上安装github.com/firebase/AndroidChat/raw/master/AndroidChat.apk 或github.com/firebase/AndroidDrawing/blob/master/… 并对其进行测试。 @MichaelLehenbauer:我刚刚在物理 2.3.6 手机(Samsung Galaxy Ace)上尝试了 Firebase 存储库中的 AndroidDrawing 和 AndroidChat 应用程序,但它们不起作用。没有强制关闭,但他们只是不连接。 好的,谢谢。听起来像我们这边的一个问题。我们会看看并回复您(可能下周)。请随时发送电子邮件至 support@firebase.com 以获取更新。给您带来的不便深表歉意! 试试看 f.setValue("test");有效吗? 【参考方案1】:

您可以尝试使用最新的 SDK (v1.0.2) 看看它是否能解决问题?我们刚刚为 Android 的一些 SSL 限制添加了解决方法。

https://www.firebase.com/docs/downloads.html

【讨论】:

我使用相同的 sdk 和 jar 文件和 api 级别 14 并在模拟器中运行,但我仍然面临同样的问题无论上面提到我的代码是否适用于即使是简单的 eclipse 代码行有人可以告诉我有什么问题? @格雷格·索尔蒂斯【参考方案2】:

试试这个代码。它正在使用 pojo 类。

  buttonSave.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            //Creating firebase object
            Firebase ref = new Firebase(Config.FIREBASE_URL);

            //Getting values to store
            String name = editTextName.getText().toString().trim();
            String address = editTextAddress.getText().toString().trim();

            //Creating Person object
            Person person = new Person();

            //Adding values
            person.setName(name);
            person.setAddress(address);

            //Storing values to firebase
            ref.child("Person").setValue(person);


            //Value event listener for realtime data update
            ref.addValueEventListener(new ValueEventListener() 
                @Override
                public void onDataChange(DataSnapshot snapshot) 
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) 
                        //Getting the data from snapshot
                        Person person = postSnapshot.getValue(Person.class);

                        //Adding it to a string
                        String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n";

                        //Displaying it on textview
                        textViewPersons.setText(string);
                    
                

                @Override
                public void onCancelled(FirebaseError firebaseError) 
                    System.out.println("The read failed: " + firebaseError.getMessage());
                
            );

        
    );

来源:Firebase Android Tutorial

【讨论】:

以上是关于无法让 Android 应用连接到 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 BLE 将 Android 应用程序连接到 Raspberry Pi 3

Cordova android 应用程序 - 发布版本 - 无法连接到服务器

在 Android 中,如何让我的应用使用连接到车载底座 USB 端口的耳机?

如果通过应用程序连接到 WIFI,则无法在 Android 上发送 http 请求

无法将 Firebase 连接到 Android 应用 |此应用无权使用 Firebase 身份验证

Android 6.0 RuntimeException:无法连接到相机服务