Hai sobat, sudah setelah sekian lama meninggalkan bog ini karena tugas yang begitu banyak 😓, akhirnya sekarang saya punya kesempatan untuk lanjut membagikan pengetahuan saya di blog ini. Pada artikel kemarin saya telah menjelaskan tentang cara membuat animasi pada komponen Floating Action Button, dan kali ini saya akan melanjutkan artikel saya tentang Login Session Register pada Android mengunakan PHP dan MySQL sebagai sisi servernya.
Biasanya untuk masuk ke dalam aplikasi android, user diharuskan untuk mengisi datanya untuk bisa menggukana aplikasi android, hal tersebut biasa disebut dengan register user, Hah, setelah user memasukkan data dirinya ke dalam aplikasi, selanjutnya user diharuskan untuk mengecek kembali data yang dimiliki untuk bisa masuk ke dalam aplikasi android atau biasa disebut dengan proses login user. Jika data user ditemikan, maka user boleh mengukanakan aplikasi tersebut.
Pada peryataan diatas, maka untuk pengunaan sehari hari, user mungkin akan merasa kesulitan apabila user seperti dituntut untuk selalu melakukan login user setiap ingin menjalankan apalikasi android. Maka dari permasalahan tersebut, dalam sebuah aplikasi harus bisa menyimpan data user yang telah di cek atau login agar user tidak perlu login lagi apabiala ingin menjalankan alikasi android. Hal ini bisa dilakukan dengan menyediakan komponen dengan nama user session. Data user akan disimpan hingga user menghapusnya dari aplikasi, atau log out dari apalikasi.
Baca juga "Cara Mudah Melacak HP Android yang Hilang"
Untuk membuat user session pada apilikasi android, kita bisa menggukanan komponen dengan nama SharePreference. Dengan menggunakan komponen ini, data user bisa disimpan dalam variable global dan dapat diakses kapanpun. Untuk membuat session pada aplikasi android, kita perlu menempatkanya dalam satu class global agar nantinya bisa diakses ke class lain yang membuatuhkan.
Pada artikel kali ini, saya akan melanjutkan artikel saya sebelumnya tentang login register mengunakan php dan mysql yang berjudul Membuat Android Login Register Mengunakan AQuery dan PHP MySQL. Juga saya akan menerapkan splash screen pada permulaan aplikasi dari artikel saya sebelumnya yang berjudul Membuat Android Welcome Screen atau Splash Sreen. Silahkan sobat coba tutorial dari artikel sebelumnya untuk membuat menerapkan tutorial yang ada di artikel ini. Oke sekarang kita mulai sob.. 😁
Membuka Project
Seperti yang sudah saya tulis di atas, saya menggunakan project dari artikel sebelumnya. Jika sudah ada, silahkan dibuka lalu lakukan langkah-langkah berikut ini.
Membuat Class SharePreference
Untuk menerapkan komponen SharePreference pada android, kita bisa letakkan pada class global. Silahkan buat class baru dengan nama SessionManager.java dan buat kodenya seperti berkut ini :
package com.example.ajisetya.loginaquery;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import java.util.HashMap;
/**
* Created by AJISETYA on 12/5/2016.
*/
public class SessionManager {
SharedPreferences pref;
SharedPreferences.Editor editor;
Context context;
int mode = 0;
private static final String pref_name = "crudpref";
private static final String is_login = "islogin";
public static final String kunci_email = "keyemail";
public SessionManager(Context context) {
this.context = context;
pref = context.getSharedPreferences(pref_name, mode);
editor = pref.edit();
}
public void createSession(String email){
editor.putBoolean(is_login, true);
editor.putString(kunci_email, email);
editor.commit();
}
public void checkLogin(){
if (!this.is_login()){
Intent i = new Intent(context, ActivityLogin.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}else {
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
private boolean is_login() {
return pref.getBoolean(is_login, false);
}
public void logout(){
editor.clear();
editor.commit();
Intent i = new Intent(context, ActivityLogin.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
public HashMap<String, String> getUserDetails(){
HashMap<String, String> user = new HashMap<String, String>();
user.put(pref_name, pref.getString(pref_name, null));
user.put(kunci_email, pref.getString(kunci_email, null));
return user;
}
}
Penerapan Pada Class Lain
Nah pada class SessionManager.java, kita telah membuat method-method yang dibutuhkan untuk membuat session pada aplikasi android, selanjutnya kita panggil method tadi ke dalam class lain yang membuatuhkan.
Pertama kita akan terapkan method session manager pada ActivityLogin untuk membuat session baru ketika user masuk ke dalam aplikasi android. Silahkan buka ActivityLogin.java dan lakukan langkah berikut ini :
1. Deklarasikan kode session manager ke dalam ActivityLogin, untuk kodenya seperti berikut ini :
SessionManager sessionManager;
letakkan kode tersebut di atas atau diluar method onCreate.
2. Inisialisasikan session manager ke dalam ActivityLogin, tepatnya di dalam method onCreate, untuk kodenya seperti berikut ini :
sessionManager = new SessionManager(getApplicationContext());
3. Buat session baru saat user berhasil login, caranya dengan memasukkan kode berikut ke dalam method Login()
sessionManager.createSession(logtxtEmail.getText().toString());
Penerapan pada ActivityLogin telah selesai, selanjutnya kita terapkan pada MainActivity untuk mengambil data user. Sebelumnya saya telah siapkan satu komponen TexView dan satu Button ke dalam layout activity_main.xml, kodenya seperti berikut ini :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.ajisetya.loginaquery.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/txtprofil"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="86dp"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
<Button
android:text="Logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtprofil"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:id="@+id/btnlogout" />
</RelativeLayout>
nah, selanjutnya kita akan menampilkan data session serta memberikan aksi log out pada tombol log out, caranya deklarasikan dan inisialisasikan session manager lalu kita panggil method yang ada pada class SessionManager.java. Pada class MainActivity.java kita buat kodenya seperti berikut ini :
package com.example.ajisetya.loginaquery;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
SessionManager sessionManager;
private TextView txtprofil;
private Button btnlogout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtprofil = (TextView)findViewById(R.id.txtprofil);
btnlogout = (Button)findViewById(R.id.btnlogout);
btnlogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sessionManager.logout();
}
});
sessionManager = new SessionManager(getApplicationContext());
HashMap<String, String> user = sessionManager.getUserDetails();
String name = user.get(SessionManager.kunci_email);
txtprofil.setText(Html.fromHtml("<b>" + name + "</b>"));
}
}
Kita telah mengambil data user pada MainActivity.java, selanjutnya kita buat agar ketika user ingin menjalankan aplikasi, user tidak perlu login kembali. Untuk melakukanya, kita buat kondisi pada splashscreen. Saat membuka aplikasi, akan tampil splash screen, saat itu juga aplikasi akan mengecek data user, jika data ditemukan, maka akan membuka activity utama atau MainActivity, jika data tidak ditemukan, maka akan membuka activity Login, untuk kodenya seperti berikut ini :
package com.example.ajisetya.loginaquery;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class splashscreen extends AppCompatActivity {
SessionManager sessionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splashscreen);
sessionManager = new SessionManager(getApplicationContext());
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
sessionManager.checkLogin();
finish();
}
},5000);
}
}
Nah, tahap membuat session pada aplikasi android sudah selesai, untuk kode lengkapnya, silahkan bisa dibuka pada link di bawah ini sob 👇👇👇
ActivityLogin.java, ActivityRegister,java
Sampai di sini aplikasi sudah bisa dijalankan. Untuk tampilanya seperti berikut ini 😃👇
Nah, jika kita menjalankan aplikasi untuk pertama kalinya, jika user belum memiliki akun maka user harus membuat terlebih dahulu atau register. Jika sudah memiliki akun, maka user tinggal login aplikasi, jika login sukses, maka session akan dibuat. Data dalam session bisa ditampilkan dimanapun. Data session tidak akan hilang, maka user bisa membuka aplikasi tanpa harus login terlebih dahulu. Jika user menghapus data session atau log out, maka data akan terhapus dan user harus login lagi untuk membuka aplikasi. Begitulah penjelasannya sob hehe 😁
Oke, sekian artikel tentang login session pada android ini, semoga membantu dan bermanfaat. Jika sobat suka dengan artikel ini, silahkan komentar atau share artikel ini ke teman lain, karena berbagi itu indah 👼😊 sampai jumpa..