1-) Android Yeni - firebase chat
1-) AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.rambo.firebasechat">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:supportsRtl"
>
<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>
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/repo' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.rambo.firebasechat"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.firebase:firebase-database:11.0.2'
compile 'com.google.firebase:firebase-auth:11.0.2'
compile 'com.firebaseui:firebase-ui-auth:2.0.1'
compile 'com.facebook.android:facebook-android-sdk:4.24.0'
compile 'com.google.firebase:firebase-core:11.0.2'
testCompile 'junit:junit:4.12'
compile 'com.twitter.sdk.android:twitter-core:3.0.0'
compile 'com.google.gms:google-services:3.1.0'
}
apply plugin: 'com.google.gms.google-services'
package com.example.rambo.firebasechat;
public class Kullanici {
String
String isim;
int yas;
public Kullanici() {
}
}
public Kullanici(String isim, int yas) {
this.isim = isim;
this.yas = yas;
}
}
public String getIsim() {
return isim;
}
}
public void setIsim(String isim) {
this.isim = isim;
}
}
public int getYas() {
return yas;
}
}
public void setYas(int yas) {
this.yas = yas;
}
}
}
}
package com.example.rambo.firebasechat;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.firebase.ui.auth.AuthUI;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseAuthException;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
Button btn_ekle;
Button btn_gor;
Button btn_nesne_ekle;
Button btn_nesne_gor;
Button btn_cikis;
EditText et_isim;
EditText et_isim1;
EditText et_yas;
TextView tv_gor;
TextView nesne_gelenler;
FirebaseDatabase db;
FirebaseAuth mFirebaseAuth;
FirebaseAuth.AuthStateListener mAuthStateListener;
public static final int RC_SIGN_IN=1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==RC_SIGN_IN){
if (requestCode==RESULT_OK){
Toast.makeText(this, "giriş yapıldı", Toast.LENGTH_SHORT).show();
}else if(requestCode==RESULT_CANCELED){
finish();
}
}else{
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_ekle = (Button) findViewById(R.id.btn_ekle);
btn_gor = (Button) findViewById(R.id.btn_gor);
btn_cikis = (Button) findViewById(R.id.btn_cikis);
btn_nesne_ekle = (Button) findViewById(R.id.btn_nesne_ekle);
btn_nesne_gor = (Button) findViewById(R.id.btn_nesne_gor);
et_isim = (EditText) findViewById(R.id.et_isim);
et_isim1 = (EditText) findViewById(R.id.et_isim1);
et_yas = (EditText) findViewById(R.id.et_yas);
tv_gor = (TextView) findViewById(R.id.tv_gor);
nesne_gelenler = (TextView) findViewById(R.id.nesne_gelenler);
db = FirebaseDatabase.getInstance(); // firebase baglandı
mFirebaseAuth = FirebaseAuth.getInstance();
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser=firebaseAuth.getCurrentUser();
if (firebaseUser!=null){// giriş yaptı ise
//firebaseUser.getDisplayName(); ismini profil resmini felan alabiliriz url'sini
Toast.makeText(MainActivity.this, "giriş yapti", Toast.LENGTH_SHORT).show();
}else{ // giriş yapmadı ise --> kaydol ekranı
startActivityForResult(// yukarıda ovveride ettim metodu
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)// otomatik hemen gitmesin id,şifre
.setAvailableProviders(
Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.TWITTER_PROVIDER).build()))
.build(),
RC_SIGN_IN);
}
}
};
btn_ekle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
yapilacakEkle(et_isim.getText().toString());
}
});
btn_gor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
yapilacaklariGor();
}
});
btn_nesne_ekle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
kullaniciKayitEt(et_isim1.getText().toString(), Integer.valueOf(et_yas.getText().toString()));
}
});
btn_nesne_gor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
kullaniciGor();
}
});
btn_cikis.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
}
});
}
@Override
protected void onResume() {
super.onResume();
mFirebaseAuth.addAuthStateListener(mAuthStateListener);
}
@Override
protected void onPause() {
super.onPause();
if (mAuthStateListener!=null){
mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
}
}
private void yapilacakEkle(String isim) {
/* // günceller
DatabaseReference dbRef=db.getReference("yapilacaklar");
dbRef.setValue(isim);
*/
DatabaseReference dbRef = db.getReference("yapilacaklar");
String key = dbRef.push().getKey();
DatabaseReference dbRefyeni = db.getReference("yapilacaklar/" + key);
dbRefyeni.setValue(isim);
}
private void yapilacaklariGor() {
DatabaseReference dbRef = db.getReference("yapilacaklar");
// dbRef.addValueEventListener();//uygulama açıldıktan sonra veri tabanındaki verileri yüklenir.. uygulama açıldıktan sonra veri tabanındaki değişiklik uygulamaya anında yansır
// dbRef.addListenerForSingleValueEvent(); // uygulama açıldıktan sonra veri tabanındaki verileri yüklenir.. anında yansıma yok
// dbRef.addChildEventListener();// child yani dalları dinler
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
tv_gor.setText("");
Iterable<DataSnapshot> keys = dataSnapshot.getChildren();
for (DataSnapshot key : keys) {
tv_gor.append(key.getValue().toString() + "\n");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void kullaniciKayitEt(String isim, int yas) {
Kullanici nesne = new Kullanici(isim, yas);
DatabaseReference dbRef = db.getReference("Kullanicilar");
String key = dbRef.push().getKey();
DatabaseReference dbRefKeyli = db.getReference("Kullanicilar/" + key);
dbRefKeyli.setValue(nesne);
}
public void kullaniciGor() {
nesne_gelenler.setText("");
DatabaseReference dbRef = db.getReference("Kullanicilar"); // tum cocukları getirir
dbRef.addListenerForSingleValueEvent(new ValueEventListener() { // addListenerForSingleValueEvent --> realtime çalışmaz boyle yazarsan sadece getirir
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot gelenler : dataSnapshot.getChildren()) {
nesne_gelenler.append(gelenler.getValue(Kullanici.class).getIsim() + "\n");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
2-) build.gradle(project)
3-) build.gradle(Module:app)
4-) Kullanici.java MainActivity
5-) MainActivity.java
6-)