1-) Android Yeni - chatleştim
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.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.firebase.ui.auth.AuthUI;
import com.google.android.gms.internal.nu;
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 android.widget.ArrayAdapter;
import java.util.ArrayList;
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;
Button btn_gonder_mesaj;
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;
public static String telefonu = "+905511472017";
public static String telefonum = "+905511472017";
Spinner sp_gelentelefon;
Spinner sp_gelenmesaj;
@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_gonder_mesaj = (Button) findViewById(R.id.btn_gonder_mesaj);
btn_cikis = (Button) findViewById(R.id.btn_cikis);
sp_gelentelefon = (Spinner) findViewById(R.id.sp_gelentelefon);
sp_gelenmesaj = (Spinner) findViewById(R.id.sp_gelenmesaj);
et_isim = (EditText) findViewById(R.id.et_isim);
et_isim1 = (EditText) findViewById(R.id.et_isim1);
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
telefonEkle(firebaseUser.getPhoneNumber());
telefonum=firebaseUser.getPhoneNumber();
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());
mesajGonder(telefonum,et_isim.getText().toString(),et_isim1.getText().toString());//telefona
}
});
btn_cikis.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
}
});
}
private void mesajGonder(String gonderen_telefon,String gonderilen_telefon,String mesaj) {
TelefonOda nesne = new TelefonOda(gonderen_telefon, mesaj);
DatabaseReference dbRef = db.getReference(gonderilen_telefon);
String key = dbRef.push().getKey();
DatabaseReference dbRefKeyli = db.getReference(gonderilen_telefon + "//" + key);
dbRefKeyli.setValue(nesne);
}
@Override
protected void onResume() {
super.onResume();
mFirebaseAuth.addAuthStateListener(mAuthStateListener);
}
String telefon_varmi = "yok";
DatabaseReference dbRef;
public void telefonEkle(String telefon) {
telefonu = telefon;
telefon_varmi = "yok";
dbRef = db.getReference("telefon");
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> keys = dataSnapshot.getChildren();
for (DataSnapshot key : keys) {
if (key.getValue().toString().equals(telefonu)) {
telefon_varmi = "var";
}
}
if (telefon_varmi.equals("yok")) {
DatabaseReference dbRefyeni = db.getReference("telefon/" + dbRef.push().getKey());
dbRefyeni.setValue(telefonu);
}
telefon_varmi = "yok";
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
telefonOdaOlustur(telefonu);
}
private void telefonOdaOlustur(String telefon) {
TelefonOda nesne = new TelefonOda(telefon, "varsayilan mesaj");
DatabaseReference dbRef = db.getReference(telefon);
String key = dbRef.push().getKey();
DatabaseReference dbRefKeyli = db.getReference(telefon + "//" + key);
dbRefKeyli.setValue(nesne);
dbRefKeyli.onDisconnect();
odayiDinle(telefon);
}
ArrayList<String> telefonlar = null;
ArrayList<String> mesajlar = null;
ArrayAdapter<String> adp2 = null, adp3 = null;
private void odayiDinle(String telefon) {
telefonlar = new ArrayList<String>();
mesajlar = new ArrayList<String>();
DatabaseReference dbRef = db.getReference(telefon); // tum cocukları getirir
dbRef.addValueEventListener(new ValueEventListener() { // addListenerForSingleValueEvent --> realtime çalışmaz boyle yazarsan sadece getirir
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot gelenler : dataSnapshot.getChildren()) {
if (gelenler.getValue(TelefonOda.class).getTelefon() != null) {
telefonlar.add(gelenler.getValue(TelefonOda.class).getTelefon());
mesajlar.add(gelenler.getValue(TelefonOda.class).getMesaj());
}
}
adp2 = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, telefonlar);
adp2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_gelentelefon.setAdapter(adp2);
adp3 = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, mesajlar);
adp3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_gelenmesaj.setAdapter(adp3);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@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) {
}
});
}
}