无法让Android应用连接到Firebase

3
所以我尝试了三次,但都没有成功地制作出一个能够与Firebase通信的Android应用程序。就像 这个教程所展示的那样,我无法不想到是我或者它(最可能是前者)缺少了一些东西。
我正在制作的示例应用程序简单地包含一个TextView,该TextView应该更新为Firebase上任何更改的内容,Firebase的URL为 https://dummy-firebase.firebaseio.com/(由于我无法创建公共Firebase,如果需要,您可以粘贴自己Firebase的URL以测试代码)。以下是Firebase上的快照:

Firebase snapshot

这是我唯一活动的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_width="match_parent"
android:layout_height="match_parent"
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_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

这里是清晰展示INTERNET权限的清单图片:

enter image description here

现在,当我从浏览器上改变Firebase上的数据时,我相信TextView中的数据应该更新。但是这并没有发生,我曾经尝试通过EditText和Button来把数据放到之前的Firebase Android项目中,但都没有成功。

非常感谢您花时间查看此问题。由于Firebase看起来非常易于设置(JavaScript版本确实如此),我真的不知道我错在哪里!

谢谢!


顺便说一下,我正在物理2.2设备上通过Eclipse运行此程序(而不是模拟器),并且设备的互联网连接良好。(已在Wi-Fi和3G上测试过)。谢谢。 - mr-nati
你能否尝试其中一个示例应用程序并查看它们是否在您的设备上正常工作?这将让我们知道是您的项目存在问题还是Android SDK存在问题(完全有可能,因为SDK是新的且处于测试版)。您应该能够直接安装https://github.com/firebase/AndroidChat/raw/master/AndroidChat.apk或https://github.com/firebase/AndroidDrawing/blob/master/AndroidDrawing.apk,并在您的设备上进行测试。 - Michael Lehenbauer
1
@MichaelLehenbauer:我刚刚在一部物理2.3.6手机(三星Galaxy Ace)上尝试了Firebase存储库中的AndroidDrawing和AndroidChat应用程序,它们无法工作。没有强制关闭,但它们只是无法连接。 - MasterScrat
1
好的,谢谢。看起来这是我们这边的问题。我们会检查一下并在下周回复您。如需更新,请随时发送电子邮件至support@firebase.com。对此给您带来的不便深感抱歉! - Michael Lehenbauer
实际上,这似乎是 Android 2.3 的 SSL 实现问题。我们正在开发一个更新的库来解决这个问题。你可以尝试在版本 >= 3.0 的模拟器上运行你的应用程序吗? - Greg Soltis
显示剩余2条评论
2个回答

4

我正在使用相同的SDK和API级别为14的JAR文件在模拟器上运行,但仍然遇到了与上述问题相同的问题。我的代码甚至不能运行一些简单的代码行,使用Eclipse。请问有人能告诉我问题出在哪里吗?@Greg Soltis - user3233280

0

尝试使用这段代码。它使用了一个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 教程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接