Last active
October 9, 2018 12:20
-
-
Save malikkurosaki/efdd4426db84582739234e107da361ee to your computer and use it in GitHub Desktop.
malikkurosaki versi complete v2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.malik.rajanepikep; | |
import android.Manifest; | |
import android.annotation.SuppressLint; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.content.pm.PackageManager; | |
import android.os.AsyncTask; | |
import android.support.annotation.NonNull; | |
import android.support.v4.app.ActivityCompat; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.support.v7.widget.LinearLayoutManager; | |
import android.support.v7.widget.RecyclerView; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.Button; | |
import android.widget.Toast; | |
import com.firebase.ui.auth.AuthUI; | |
import com.firebase.ui.database.FirebaseRecyclerAdapter; | |
import com.firebase.ui.database.FirebaseRecyclerOptions; | |
import com.google.android.gms.tasks.OnCompleteListener; | |
import com.google.android.gms.tasks.OnSuccessListener; | |
import com.google.android.gms.tasks.Task; | |
import com.google.firebase.auth.FirebaseAuth; | |
import com.google.firebase.auth.FirebaseUser; | |
import com.google.firebase.database.DatabaseReference; | |
import com.google.firebase.database.FirebaseDatabase; | |
import com.google.firebase.iid.FirebaseInstanceId; | |
import com.google.firebase.iid.InstanceIdResult; | |
import com.google.firebase.messaging.FirebaseMessaging; | |
import org.json.JSONObject; | |
import java.io.OutputStreamWriter; | |
import java.net.HttpURLConnection; | |
import java.net.URL; | |
import java.util.Collections; | |
import java.util.List; | |
public class MainActivity extends AppCompatActivity { | |
//kode untuk permintaan login | |
private static final int RC_SIGN_IN = 123; | |
private List<AuthUI.IdpConfig> providers; | |
private DatabaseReference reference; | |
private FirebaseRecyclerAdapter<Dapat,MyAdapter> adapter; | |
private String tkn; | |
//deklarai perintaan ijin secara bersamaan | |
int PERMISSION_ALL = 101; | |
String[] PERMISSIONS = { | |
android.Manifest.permission.VIBRATE, | |
android.Manifest.permission.WRITE_CONTACTS, | |
android.Manifest.permission.WRITE_EXTERNAL_STORAGE, | |
android.Manifest.permission.READ_SMS, | |
}; | |
public MainActivity() { | |
} | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
//get token | |
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() { | |
@Override | |
public void onSuccess(InstanceIdResult instanceIdResult) { | |
tkn = instanceIdResult.getToken(); | |
// Do whatever you want with your token now | |
// i.e. store it on SharedPreferences or DB | |
// or directly send it to server | |
} | |
}); | |
FirebaseMessaging.getInstance().subscribeToTopic("macan"); | |
//deklarsi firebase ui | |
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); | |
reference = FirebaseDatabase.getInstance().getReference(); | |
Boolean sudahMasuk = user != null; | |
//kirim pesan notification | |
Button kirimPesan = findViewById(R.id.kirimPesan); | |
kirimPesan.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
KirimBerita berita = new KirimBerita(tkn); | |
berita.execute(); | |
} | |
}); | |
//tombol untuk meminta permission | |
Button minta = findViewById(R.id.minta); | |
minta.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS, PERMISSION_ALL); | |
} | |
}); | |
//mengecek permisi ketika awal aplikasi dibuka | |
if(!hasPermissions(getApplicationContext(), PERMISSIONS)){ | |
Toast.makeText(getApplicationContext(),"ijin belum Ada",Toast.LENGTH_LONG).show(); | |
}else { | |
Toast.makeText(getApplicationContext(),"permisi sudah complete",Toast.LENGTH_LONG).show(); | |
} | |
providers = Collections.singletonList( | |
new AuthUI.IdpConfig.PhoneBuilder().build() | |
); | |
final Button masuk = findViewById(R.id.tombol1); | |
Button keluar = findViewById(R.id.keluar); | |
//chek apakah sudah login atau belum | |
if (sudahMasuk){ | |
masuk.setVisibility(View.GONE); | |
keluar.setVisibility(View.VISIBLE); | |
String phoneNumber = user.getPhoneNumber(); | |
Toast.makeText(getApplicationContext(), phoneNumber,Toast.LENGTH_LONG).show(); | |
}else { | |
masuk.setVisibility(View.VISIBLE); | |
keluar.setVisibility(View.GONE); | |
masuk.setOnClickListener(v -> login()); | |
} | |
//tombol untuk keluar atau signout | |
keluar.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
AuthUI.getInstance().signOut(getApplicationContext()) | |
.addOnCompleteListener(task -> { | |
finish(); | |
startActivity(getIntent()); | |
}); | |
} | |
}); | |
// memulai permintaan ke database mmenggunakan firebase ui | |
FirebaseRecyclerOptions<Dapat> options = new FirebaseRecyclerOptions.Builder<Dapat>() | |
.setQuery(reference,Dapat.class).build(); | |
adapter = new FirebaseRecyclerAdapter<Dapat, MyAdapter>(options) { | |
@Override | |
protected void onBindViewHolder(@NonNull MyAdapter holder, int position, @NonNull Dapat model) { | |
holder.nama.setText(model.getNama()); | |
holder.alamat.setText(model.getAlamat()); | |
Toast.makeText(getApplicationContext(),model.getAlamat(),Toast.LENGTH_LONG).show(); | |
} | |
@NonNull | |
@Override | |
public MyAdapter onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { | |
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.orang,viewGroup,false); | |
return new MyAdapter(view); | |
} | |
}; | |
//menerapkan recycleerview dari adapter | |
RecyclerView recyclerView = findViewById(R.id.wadah); | |
LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); | |
recyclerView.setLayoutManager(layoutManager); | |
adapter.startListening(); | |
recyclerView.setAdapter(adapter); | |
} | |
//ketika permintaanlogin diterima atau ditolak | |
@Override | |
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | |
super.onActivityResult(requestCode, resultCode, data); | |
if (requestCode == RC_SIGN_IN){ | |
if (resultCode == RESULT_OK){ | |
Toast.makeText(getApplicationContext(),"anda masuk ya",Toast.LENGTH_LONG).show(); | |
finish(); | |
startActivity(getIntent()); | |
}else { | |
Toast.makeText(getApplicationContext(),"gagal masuk",Toast.LENGTH_LONG).show(); | |
finish(); | |
startActivity(getIntent()); | |
} | |
} | |
} | |
//login menggunakan firebase ui dengan sms | |
public void login(){ | |
startActivityForResult( | |
AuthUI.getInstance() | |
.createSignInIntentBuilder() | |
.setAvailableProviders(providers) | |
.setLogo(R.drawable.mobil) | |
.build(),RC_SIGN_IN | |
); | |
} | |
@Override | |
protected void onStart() { | |
super.onStart(); | |
//memulain mendengarkan firebase ui | |
adapter.startListening(); | |
} | |
@Override | |
protected void onStop() { | |
super.onStop(); | |
//firebase ui database berhenti ketika stop | |
adapter.stopListening(); | |
} | |
//ketika permisi telah di berikan atau belum | |
@Override | |
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { | |
switch (requestCode) { | |
case 101: | |
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
Toast.makeText(getApplicationContext(),"ijin diberikan",Toast.LENGTH_LONG).show(); | |
} else { | |
Toast.makeText(getApplicationContext(),"ada kendala , ijin harus diberikan",Toast.LENGTH_LONG).show(); | |
} | |
break; | |
default: | |
super.onRequestPermissionsResult(requestCode, permissions, grantResults); | |
} | |
} | |
//mempertanyakan runtime permisi | |
public static boolean hasPermissions(Context context, String... permissions) { | |
if (context != null && permissions != null) { | |
for (String permission : permissions) { | |
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { | |
return false; | |
} | |
} | |
} | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment