Java android studio中的Firebase聊天应用程序

Java android studio中的Firebase聊天应用程序,java,android,android-manifest,firebase-authentication,firebase-cloud-messaging,Java,Android,Android Manifest,Firebase Authentication,Firebase Cloud Messaging,在android studio中,我正在使用Fire base创建一个消息应用程序,但当我启动我的应用程序时,它会显示一个主活动几秒钟,然后显示一个登录页面。当我成功登录时,应用程序崩溃了。我该怎么办?请帮助我我我的代码很完美。我想我的清单中有一些黑色的东西。请帮助我解决这个问题 这是清单代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.androi

在android studio中,我正在使用Fire base创建一个消息应用程序,但当我启动我的应用程序时,它会显示一个主活动几秒钟,然后显示一个登录页面。当我成功登录时,应用程序崩溃了。我该怎么办?请帮助我我我的代码很完美。我想我的清单中有一些黑色的东西。请帮助我解决这个问题

这是清单代码

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.syedqadri.message">

     <uses-permission android:name="android.permission.INTERNET" />

        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher_icon"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
                 </activity>


        </application>

    </manifest>
这是我的Gradle(应用程序)

这是我的java MainActivity.java

package com.example.syedqadri.message;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.text.format.DateFormat;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.database.FirebaseListAdapter;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {

    private static int SIGN_IN_REQUEST_CODE = 1;
    private FirebaseListAdapter<chatmessage> adapter;
    RelativeLayout activity_main;
    FloatingActionButton sent;


    @Override
    public boolean onOptionsItemSelected(MenuItem item){

        if(item.getItemId() == R.id.menu_signout){
            AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener<Void>(){

                @Override
                public void onComplete(@NonNull Task<Void> task){

                    Snackbar.make(activity_main, "You Have Been Sign Out", Snackbar.LENGTH_SHORT).show();
                    finish();
                }
            });
        }
        return true;
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu,menu);
        return true;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == SIGN_IN_REQUEST_CODE){

            if(resultCode == RESULT_OK){
                Snackbar.make(activity_main, "Signing in SucessFully.Welcome ...",Snackbar.LENGTH_SHORT).show();
                displaychatmessage();

            }
            else{
                Snackbar.make(activity_main, "Try Again Later ...",Snackbar.LENGTH_SHORT).show();
                finish();

            }
        }

    }

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

        activity_main = (RelativeLayout)findViewById(R.id.activity_main);
        sent =   (FloatingActionButton)findViewById(R.id.sent);
        sent.setOnClickListener(new View.OnClickListener(){


            @Override
            public void onClick(View view) {
                EditText input = (EditText)findViewById(R.id.input);
                FirebaseDatabase.getInstance().getReference().push().setValue(new chatmessage(input.getText().toString(),FirebaseAuth.getInstance().getCurrentUser().getEmail()));
                input.setText("");
                input.requestFocus();
              //  displaychatmessage();
            }
        });

        if(FirebaseAuth.getInstance().getCurrentUser() == null){
            startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(),SIGN_IN_REQUEST_CODE);
        }
        else{

            Snackbar.make(activity_main, "Welcome" +FirebaseAuth.getInstance().getCurrentUser().getEmail(),Snackbar.LENGTH_SHORT).show();
            displaychatmessage();
        }
        //load content
        displaychatmessage();
    }

    private void displaychatmessage() {

        ListView listOfMessage = (ListView)findViewById(R.id.lst_message);
        adapter =  new FirebaseListAdapter<chatmessage>(this,chatmessage.class,R.layout.list,FirebaseDatabase.getInstance().getReference()) {


            @Override
            protected void populateView(View v, chatmessage model, int position) {
                //get reference to the list view items.xml
                TextView messageText,messageUser,messageTime;
                messageText = (TextView) v.findViewById(R.id.message_text);
                messageUser = (TextView) v.findViewById(R.id.message_user);
                messageTime = (TextView) v.findViewById(R.id.message_time);

                messageText.setText(model.getMessaegeText());
                messageUser.setText(model.getMessageUser());
                messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",model.getMessageTime()));

            }
        };

        listOfMessage.setAdapter(adapter);
    }
}

嗯。。我想你忘了在清单文件中添加互联网权限 将此行放在您的应用程序标签上方:

<uses-permission android:name="android.permission.INTERNET"/>


基本上,我的应用程序在登录应用程序之前会显示主屏幕,而在登录应用程序之后会崩溃。@Umer您的初始帖子缺少此内容。阅读日志,它会告诉你代码崩溃的确切位置和原因,通常我的应用程序无法连接firebasedude@Umer Yousuf。。我认为您应该注释掉那些在build.gradle中注释过的依赖项。做一件事,在gradle中添加firebase数据库依赖项。另外,请确保已从Firebase控制台启用Firebase身份验证登录方法,以实现身份验证。请阅读有关身份验证的信息。如果代码崩溃,你忘了logcati也会在下面提供我代码的logcat。不,不要放在下面,你可以编辑初始问题。而且,我没有看到任何撞车。试着使用Android Studio的过滤功能来获取你的应用程序日志。让我检查一下
package com.example.syedqadri.message;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.text.format.DateFormat;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.database.FirebaseListAdapter;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {

    private static int SIGN_IN_REQUEST_CODE = 1;
    private FirebaseListAdapter<chatmessage> adapter;
    RelativeLayout activity_main;
    FloatingActionButton sent;


    @Override
    public boolean onOptionsItemSelected(MenuItem item){

        if(item.getItemId() == R.id.menu_signout){
            AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener<Void>(){

                @Override
                public void onComplete(@NonNull Task<Void> task){

                    Snackbar.make(activity_main, "You Have Been Sign Out", Snackbar.LENGTH_SHORT).show();
                    finish();
                }
            });
        }
        return true;
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu,menu);
        return true;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == SIGN_IN_REQUEST_CODE){

            if(resultCode == RESULT_OK){
                Snackbar.make(activity_main, "Signing in SucessFully.Welcome ...",Snackbar.LENGTH_SHORT).show();
                displaychatmessage();

            }
            else{
                Snackbar.make(activity_main, "Try Again Later ...",Snackbar.LENGTH_SHORT).show();
                finish();

            }
        }

    }

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

        activity_main = (RelativeLayout)findViewById(R.id.activity_main);
        sent =   (FloatingActionButton)findViewById(R.id.sent);
        sent.setOnClickListener(new View.OnClickListener(){


            @Override
            public void onClick(View view) {
                EditText input = (EditText)findViewById(R.id.input);
                FirebaseDatabase.getInstance().getReference().push().setValue(new chatmessage(input.getText().toString(),FirebaseAuth.getInstance().getCurrentUser().getEmail()));
                input.setText("");
                input.requestFocus();
              //  displaychatmessage();
            }
        });

        if(FirebaseAuth.getInstance().getCurrentUser() == null){
            startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(),SIGN_IN_REQUEST_CODE);
        }
        else{

            Snackbar.make(activity_main, "Welcome" +FirebaseAuth.getInstance().getCurrentUser().getEmail(),Snackbar.LENGTH_SHORT).show();
            displaychatmessage();
        }
        //load content
        displaychatmessage();
    }

    private void displaychatmessage() {

        ListView listOfMessage = (ListView)findViewById(R.id.lst_message);
        adapter =  new FirebaseListAdapter<chatmessage>(this,chatmessage.class,R.layout.list,FirebaseDatabase.getInstance().getReference()) {


            @Override
            protected void populateView(View v, chatmessage model, int position) {
                //get reference to the list view items.xml
                TextView messageText,messageUser,messageTime;
                messageText = (TextView) v.findViewById(R.id.message_text);
                messageUser = (TextView) v.findViewById(R.id.message_user);
                messageTime = (TextView) v.findViewById(R.id.message_time);

                messageText.setText(model.getMessaegeText());
                messageUser.setText(model.getMessageUser());
                messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",model.getMessageTime()));

            }
        };

        listOfMessage.setAdapter(adapter);
    }
}
package com.example.syedqadri.message;

import java.util.Date;

/**
 * Created by Syed Qadri on 09-Jun-17.
 */
public class chatmessage {

    private String messaegeText;
    private  String messageUser;
    private long messageTime;

    public chatmessage(String messaegeText, String messageUser) {
       this.messaegeText = messaegeText;
       this.messageUser = messageUser;

        messageTime = new Date().getTime();
    }
    public chatmessage() {
    }
    public String getMessaegeText() {
        return messaegeText;
    }

    public void setMessaegeText(String messaegeText) {
        this.messaegeText = messaegeText;
    }

    public String getMessageUser() {
        return messageUser;
    }

    public void setMessageUser(String messageUser) {
        this.messageUser = messageUser;
    }

    public long getMessageTime() {
        return messageTime;
    }

    public void setMessageTime(long messageTime) {
        this.messageTime = messageTime;
    }
}
<uses-permission android:name="android.permission.INTERNET"/>