Apa itu Login
Session? Kalian pernah menggunakan Aplikasi Facebook yang ada di
android? Atau mungkin Instagram? Ya seperti itulah kira-kira, jadi
ketika kita login dan keluar dari aplikasi tanpa logout, kemudian
kita ingin masuk aplikasi lagi, kita tidak perlu memasukan username
dan password untuk login lagi. Intinya kita tidak perlu login
berulang kali saat keluar masuk aplikasi, kecuali saat kita logout.
Nah sekarang kita
ingin belajar bagaimana cara membuatnya, pertama kita buat file-file
yang kita butuhkan, seperti ini
DatabaseHelper.java Class ini berisi perintah untuk menjalankan query seperti Create Table, Insert Data, Delete Data dan sebagainya ke Database SQLite.
LoginActivity.java
Class ini berisi perintah untuk login untuk masuk ke MainActivity
dan cek session yang ada dalam database.
MainActivity.java
Class ini hanya berisi tombol logout, yang nantinya akan menghapus
session, yang mengharuskan kita untuk login lagi.
activity_login.xml
layout dari LoginActivity
activity_main.xml
layout dari
MainActivity
-
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextUsername"
android:layout_gravity="center_horizontal"
android:hint="Username" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/editTextPassword"
android:layout_gravity="center_horizontal"
android:hint="Password" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:id="@+id/buttonLogin"
android:layout_gravity="right" />
</LinearLayout>
-
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Logout"
android:id="@+id/buttonLogout"
android:layout_gravity="right" />
</LinearLayout>
-
DatabaseHelper.java
-
SimpanData(String Username, String Password)Method inilah yang nantinya akan dipanggil di LoginActivity.java untuk menyimpan data username dan password yang login.
-
LihatData()Method ini berfungsi untuk melihat data yang ada di database.
-
HapusData()Method ini berfungsi untuk mengahpus semua data yang ada di database. Method inilah yang akan dipanggil ketika kita logout.
package azisuazusa.loginsession;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "DB_Login";
public static final String TABLE_NAME = "TB_Login";
public static final String COL_1 = "Username";
public static final String COL_2 = "Password";
private SQLiteDatabase db;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (Username STRING PRIMARY KEY, Password TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public void SimpanData(String Username, String Password) {
ContentValues values = new ContentValues();
values.put(COL_1, Username);
values.put(COL_2, Password);
db.insert(TABLE_NAME, null, values);
}
public Cursor LihatData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("Select * from " + TABLE_NAME, null);
return res;
}
public void HapusData() {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from " + TABLE_NAME);
}
}
-
LoginActivity.javaDisini untuk login kita tidak memakan database apapun, kita hanya menggunakan variable string yang berisi Username dan Password.
-
if(res.moveToNext())Kode ini berfungsi untuk memeriksa, apakah di dalam database ada data user yang telah login. Jika ada maka LoginActivity.java akan ditutup dan langsung masuk ke MainActivity.
-
Login()Method ini berisi perintah untuk login, dan di dalamnya ada MyDB.SimpanData(User, Pass); yang berfungsi untuk menyimpan data Username dan Password yang sedang login.
package azisuazusa.loginsession;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity {
Button btnLogin;
EditText etUsername, etPassword;
String Username = "azisu", Password = "azusa";
DatabaseHelper MyDB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
MyDB = new DatabaseHelper(this);
Cursor res = MyDB.LihatData();
if(res.moveToNext()){
finish();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
etUsername = (EditText) findViewById(R.id.editTextUsername);
etPassword = (EditText) findViewById(R.id.editTextPassword);
btnLogin = (Button) findViewById(R.id.buttonLogin);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Login();
}
});
}
private void Login(){
String User = etUsername.getText().toString();
String Pass = etPassword.getText().toString();
if(User.equals("") || Pass.equals("")){
Toast.makeText(this, "Form Masih Kosong!", Toast.LENGTH_SHORT).show();
}else{
if(!User.equals(Username) || !Pass.equals(Password)){
Toast.makeText(this, "Username atau Password Salah!", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this, "Berhasil Login!", Toast.LENGTH_SHORT).show();
MyDB.SimpanData(User, Pass);
finish();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}
}
}
-
MainActivity.java
-
MyDB.HapusData();Kode inilah yang berfungsi untuk menghapus semua data yang ada di database.
package azisuazusa.loginsession;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Button btnLogout;
DatabaseHelper MyDB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDB = new DatabaseHelper(this);
btnLogout = (Button) findViewById(R.id.buttonLogout);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDB.HapusData();
finish();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
});
}
}
-
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="azisuazusa.loginsession">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
</application>
</manifest>
Sekarang silahkan coba jalankan! Sekian, semoga bermanfaat.
Wassalamualaikum Wr. Wb~