Skip to content

Instantly share code, notes, and snippets.

@malikkurosaki
Last active October 8, 2018 14:09
Show Gist options
  • Save malikkurosaki/f649c9224946195c59168e6a8606ce7e to your computer and use it in GitHub Desktop.
Save malikkurosaki/f649c9224946195c59168e6a8606ce7e to your computer and use it in GitHub Desktop.
malikkurosaki complete add picaso image
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 com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
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());
Picasso.get().load(model.getGambar()).into(holder.gambar, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Log.d("MUAT_GAMBAR"," error : "+e);
}
});
}
@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