registerdanloginandroidmenggunakanasynctask-140112222304-phpapp01.pdf

Embed Size (px)

Citation preview

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    1

    Register dan Login Android Menggunakan Async Task ke

    Database Server

    DAPATKAN SEGERA

    Buku Panduan Mudah Pengembangan

    Google Map Android (integrasi dengan

    MySQL dan SQLite) + CD Source code

    Penerbit : Andi Offset

    Terbit : April 2015

    Telah tersedia di Gramedia, Togamas,

    Social Agency dan beberapa toko buku

    online.

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    2

    Register dan Login Android Menggunakan Async Task

    Ke Database Server

    Oleh Yusuf Mufti [email protected] yusufmufti.com

    Membuat Register / Pendaftaran dan Login pada Android pada tulisan masih memiliki

    kekurangan seperti belum ada pengecekan apakah email telah terdaftar, komunikasi

    data login masih menggunakan method GET, dan belum menggunakan library seperti

    volley.

    Langkah-langkah yang akan dibahas pada tulisan ini yaitu

    1. Membuat database

    2. Membuat PHP untuk handle request

    3. Membuat projek Android

    A. Membuat Database.

    Buatlah database dengan nama login dan buatlah tabel user. Adapun struktur tabel

    user sebagai berikut ini.

    B. PHP untuk handle request

    Ada 3 file PHP yang kita akan buat, yaitu koneksi.php,register.php dan login.php dan

    simpan di htdocs dengan folder login.

    - File koneksi.php

    - File register.php

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    3

    $telepon=$_POST['telepon'];

    $nama=$_POST['nama'];

    include "koneksi.php";

    $namaTabel = "user";

    header('Content-Type: text/xml');

    $query = "INSERT INTO $namaTabel

    VALUES('','$nama','$email','$password','$alamat','$telepon')";

    $hasil = mysql_query($query);

    if($hasil)

    {

    $response["success"] = "1";

    $response["message"] = "Data sukses diinput";

    echo json_encode($response);

    }

    else

    {$response["success"] = "0";

    $response["message"] = "Maaf , terjadi kesalahan";

    // echoing JSON response

    echo json_encode($response);

    }

    ?>

    - File login.php

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    4

    $h['nama'] = $data['nama'] ;

    $h['alamat'] = $data['alamat'] ;

    $h['email'] = $data['email'];

    array_push($response["login"], $h);

    }

    $response["success"] = "1";

    echo json_encode($response);

    }

    else {

    $response["success"] = "0";

    $response["message"] = "Tidak ada data";

    echo json_encode($response);

    }

    ?>

    C. Membuat Projek Android

    - Membuat projek Android dengan klik File > New > Android Application Project,

    kemudian konfigurasi untuk penamaan package, icon, dan file xml.

    - Membuat file xml di folder res layout

    Sebelum membahas kodenya, saya ingin menunjukkan struktur file di folder res sebagai

    berikut

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    5

    1. activity_dashboard.xml

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    6

    YUSUF MUFTI

    Freelance Programmer

    www.yusufmufti.com

    Email : [email protected]

    SMS - WA : +62 896 373 191 80

    FB : yusufmufti

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    7

    2. akunku.xml

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    8

    android:text="AKUN" android:textAppearance="?android:attr/textAppearanceLarge" />

    3. register.xml

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    9

    android:paddingLeft="10dp"

    android:text="Registration"

    android:textSize="25sp"

    android:textColor="#aabb00"

    android:gravity="center_horizontal"/>

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    10

    android:id="@+id/address"

    android:layout_marginTop="10dp"

    android:layout_marginLeft="10dp"

    android:paddingRight="10dp"

    android:hint="insert your address"

    android:minLines="3"/>

    4. login.xml

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    11

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    12

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    13

    File java terdiri atas 8 file java seperti terlihat pada gambar berikut.

    a. ConnectionDetector.java

    package com.cekinternet;

    /*

    * Class untuk pengecekan internet

    */

    import android.content.Context;

    import android.net.ConnectivityManager;

    import android.net.NetworkInfo;

    public class ConnectionDetector {

    private Context _context;

    public ConnectionDetector(Context context) {

    this._context = context;

    }

    public boolean isConnectingToInternet() {

    ConnectivityManager connectivity = (ConnectivityManager)

    _context

    .getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivity != null) {

    NetworkInfo[] info = connectivity.getAllNetworkInfo();

    if (info != null)

    for (int i = 0; i < info.length; i++)

    if (info[i].getState() ==

    NetworkInfo.State.CONNECTED) {

    return true;

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    14

    }

    return false;

    }

    }

    b. Akunku.java

    /**

    * author : Yusuf Mufti

    * email : [email protected]

    * web : yusufmufti.com

    */

    package com.login;

    import java.util.HashMap;

    import org.json.JSONArray;

    import android.app.Activity;

    import android.app.ProgressDialog;

    import android.content.Intent;

    import android.os.Bundle;

    import android.text.Html;

    import android.view.View;

    import android.widget.Button;

    import android.widget.ListView;

    import android.widget.TextView;

    import android.widget.Toast;

    import com.yusfa.login.R;

    public class Akunku extends Activity{

    //inisiasi variabel yang akan digunakan

    Button logout;

    SessionManager session;

    ListView lv;

    ProgressDialog pDialog;

    JSONArray contacts = null;

    String email, name;

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    15

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.akunku);

    //membuat session untuk user

    session = new SessionManager(getApplicationContext());

    Toast.makeText(getApplicationContext(), "User Login Status: " +

    session.isLoggedIn(), Toast.LENGTH_LONG).show();

    session.checkLogin();

    HashMap user = session.getUserDetails();

    name = user.get(SessionManager.KEY_NAME);

    email=user.get(SessionManager.KEY_EMAIL);

    TextView status = (TextView)findViewById(R.id.status);

    status.setText(Html.fromHtml("Welcome,"+name+" "));

    //inisiasi tombol Logout dan memberi fungsi klik

    logout = (Button)findViewById(R.id.logout);

    logout.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View arg0) {

    // TODO Auto-generated method stub

    session.logoutUser();

    finish();

    }

    });

    }

    @Override

    public void onBackPressed() {

    // TODO Auto-generated method stub

    Intent i = new Intent(getApplicationContext(), Dashboard.class);

    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    startActivity(i);

    finish();

    }

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    16

    c. AlertDialogManager.java

    package com.login;

    import com.yusfa.login.R;

    import android.app.AlertDialog;

    import android.content.Context;

    import android.content.DialogInterface;

    public class AlertDialogManager {

    /**

    * androidhive

    * */

    @SuppressWarnings("deprecation")

    public void showAlertDialog(Context context, String title, String message,

    Boolean status) {

    AlertDialog alertDialog = new AlertDialog.Builder(context).create();

    // Setting Dialog Title

    alertDialog.setTitle(title);

    // Setting Dialog Message

    alertDialog.setMessage(message);

    if(status != null)

    // Setting alert dialog icon

    alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);

    // Setting OK Button

    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {

    }

    });

    // Showing Alert Message

    alertDialog.show();

    }

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    17

    d. Dashboard.java

    /**

    * author : Yusuf Mufti

    * email : [email protected]

    * web : yusufmufti.com

    */

    package com.login;

    import android.app.Activity;

    import android.app.AlertDialog;

    import android.content.DialogInterface;

    import android.content.Intent;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.Toast;

    import com.cekinternet.ConnectionDetector;

    import com.yusfa.login.R;

    public class Dashboard extends Activity implements OnClickListener {

    Button exit, pasang;

    Intent a;

    ConnectionDetector cd;

    Boolean isInternetPresent = false;

    AlertDialogManager alert = new AlertDialogManager();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_dashboard);

    //Inisiasi

    exit=(Button)findViewById(R.id.exit);

    pasang =(Button)findViewById(R.id.pasang);

    cekInternet();

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    18

    //memberi event klik

    exit.setOnClickListener(this);

    }

    //menghandle klik

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    switch (v.getId()) {

    case R.id.pasang:

    a = new Intent(getApplicationContext(), Akunku.class);

    startActivity(a);

    break;

    case R.id.exit:

    Dialog();

    break;

    default:

    break;

    }

    }

    //dialog untuk keluar

    public void Dialog(){

    AlertDialog.Builder builder= new AlertDialog.Builder(this);

    builder.setMessage("Keluar dari Aplikasi ?");

    builder.setPositiveButton("Batal", new

    DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int arg1) {

    // TODO Auto-generated method stub

    dialog.dismiss();

    }

    });

    builder.setNegativeButton("Ya", new

    DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface arg0, int arg1) {

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    19

    // TODO Auto-generated method stub

    finish();

    }

    });

    builder.create().show();

    }

    //menghandle tombol back smartphone

    @Override

    public void onBackPressed() {

    // TODO Auto-generated method stub

    Dialog();

    }

    public void cekInternet(){

    //memanggil pengecekan internet

    cd = new

    ConnectionDetector(getApplicationContext());

    isInternetPresent = cd.isConnectingToInternet();

    if (isInternetPresent) {

    Toast.makeText(getApplicationContext(),

    "Anda Memiliki Koneksi Internet",

    Toast.LENGTH_SHORT)

    .show();

    pasang.setOnClickListener(this);

    } else {

    alert.showAlertDialog(Dashboard.this, "Peringatan",

    "Internet tidak tersedia, Anda harus mengecek koneksi internet.", false);

    }

    }

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    20

    e. JSONParser.java

    package com.login;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.UnsupportedEncodingException;

    import java.util.List;

    import org.apache.http.HttpEntity;

    import org.apache.http.HttpResponse;

    import org.apache.http.NameValuePair;

    import org.apache.http.client.ClientProtocolException;

    import org.apache.http.client.entity.UrlEncodedFormEntity;

    import org.apache.http.client.methods.HttpGet;

    import org.apache.http.client.methods.HttpPost;

    import org.apache.http.client.utils.URLEncodedUtils;

    import org.apache.http.impl.client.DefaultHttpClient;

    import org.json.JSONException;

    import org.json.JSONObject;

    import android.util.Log;

    public class JSONParser {

    static InputStream is = null;

    static JSONObject jObj = null;

    static String json = "";

    // constructor

    public JSONParser() {

    }

    public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request

    try {

    // defaultHttpClient

    DefaultHttpClient httpClient = new DefaultHttpClient();

    HttpPost httpPost = new HttpPost(url);

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    21

    HttpResponse httpResponse = httpClient.execute(httpPost);

    HttpEntity httpEntity = httpResponse.getEntity();

    is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

    } catch (ClientProtocolException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    try {

    BufferedReader reader = new BufferedReader(new

    InputStreamReader(

    is, "iso-8859-1"), 8);

    StringBuilder sb = new StringBuilder();

    String line = null;

    while ((line = reader.readLine()) != null) {

    sb.append(line + "\n");

    }

    is.close();

    json = sb.toString();

    } catch (Exception e) {

    Log.e("Buffer Error", "Error converting result " +

    e.toString());

    }

    // try parse the string to a JSON object

    try {

    jObj = new JSONObject(json);

    } catch (JSONException e) {

    Log.e("JSON Parser", "Error parsing data " + e.toString());

    }

    // return JSON String

    return jObj;

    }

    public JSONObject makeHttpRequest(String url, String method,

    List params) {

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    22

    // Making HTTP request

    try {

    // check for request method

    if (method == "POST") {

    // request method is POST

    // defaultHttpClient

    DefaultHttpClient httpClient = new

    DefaultHttpClient();

    HttpPost httpPost = new HttpPost(url);

    httpPost.setEntity(new

    UrlEncodedFormEntity(params));

    HttpResponse httpResponse =

    httpClient.execute(httpPost);

    HttpEntity httpEntity = httpResponse.getEntity();

    is = httpEntity.getContent();

    } else if (method == "GET") {

    // request method is GET

    DefaultHttpClient httpClient = new

    DefaultHttpClient();

    String paramString =

    URLEncodedUtils.format(params, "utf-8");

    url += "?" + paramString;

    HttpGet httpGet = new HttpGet(url);

    HttpResponse httpResponse =

    httpClient.execute(httpGet);

    HttpEntity httpEntity = httpResponse.getEntity();

    is = httpEntity.getContent();

    }

    } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

    } catch (ClientProtocolException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    try {

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    23

    BufferedReader reader = new BufferedReader(new

    InputStreamReader(

    is, "iso-8859-1"), 8);

    StringBuilder sb = new StringBuilder();

    String line = null;

    while ((line = reader.readLine()) != null) {

    sb.append(line + "\n");

    }

    is.close();

    json = sb.toString();

    } catch (Exception e) {

    Log.e("Buffer Error", "Error converting result " +

    e.toString());

    }

    // try parse the string to a JSON object

    try {

    jObj = new JSONObject(json);

    } catch (JSONException e) {

    Log.e("JSON Parser", "Error parsing data " + e.toString());

    }

    // return JSON String

    return jObj;

    }

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    24

    f. Login.java

    /**

    * author : Yusuf Mufti

    * email : [email protected]

    * web : yusufmufti.com

    */

    package com.login;

    import java.util.ArrayList;

    import java.util.HashMap;

    import org.json.JSONArray;

    import org.json.JSONObject;

    import com.cekinternet.ConnectionDetector;

    import com.yusfa.login.R;

    import android.app.Activity;

    import android.app.ProgressDialog;

    import android.content.Intent;

    import android.os.AsyncTask;

    import android.os.Bundle;

    import android.util.Log;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.EditText;

    import android.widget.TextView;

    import android.widget.Toast;

    public class Login extends Activity implements OnClickListener{

    Button register, login;

    Intent a;

    EditText username, password;

    String url, success;

    SessionManager session;

    AlertDialogManager alert = new AlertDialogManager();

    ConnectionDetector cd;

    Boolean isInternetPresent = false;

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    25

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.login);

    session = new SessionManager(getApplicationContext());

    Toast.makeText(getApplicationContext(), "User Login Status: " +

    session.isLoggedIn(), Toast.LENGTH_LONG).show();

    register = (Button)findViewById(R.id.register);

    login = (Button)findViewById(R.id.submit);

    username = (EditText)findViewById(R.id.username);

    password = (EditText)findViewById(R.id.password);

    cekInternet();

    }

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    switch (v.getId()) {

    case R.id.register:

    a = new Intent (Login.this, Register.class);

    startActivity(a);

    break;

    case R.id.submit:

    url = "http://10.0.2.2:8080/login/login.php?" +

    "username="

    +username.getText().toString()+"&password=" + password.getText().toString();

    if(username.getText().toString().trim().length()>0

    &&password.getText().toString().trim().length()>0){

    new AmbilData().execute();

    }else{

    alert.showAlertDialog(Login.this, "Login failed..", "Silakan

    isi username adan password", false);

    }

    break;

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    26

    default:

    break;

    }

    }

    public class AmbilData extends AsyncTask{

    ArrayList contactList = new ArrayList

    ();

    ProgressDialog pDialog;

    @Override

    protected void onPreExecute() {

    // TODO Auto-generated method stub

    super.onPreExecute();

    pDialog = new ProgressDialog(Login.this);

    pDialog.setMessage("Loading Data ...");

    pDialog.setIndeterminate(false);

    pDialog.setCancelable(true);

    pDialog.show();

    }

    @Override

    protected String doInBackground(String... arg0) {

    // TODO Auto-generated method stub

    JSONParser jParser = new JSONParser();

    JSONObject json = jParser.getJSONFromUrl(url);

    try {

    success = json.getString("success");

    Log.e("error", "nilai sukses=" + success);

    JSONArray hasil = json.getJSONArray("login");

    if (success.equals("1")){

    for (int i = 0; i < hasil.length(); i++) {

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    27

    JSONObject c = hasil.getJSONObject(i);

    // Storing each json item in variable

    String nama = c.getString("nama").trim();

    String email = c.getString("email").trim();

    session.createLoginSession(nama, email);

    Log.e("ok", " ambil data");

    }

    }

    else {

    Log.e("erro", "tidak bisa ambil data 0");

    }

    } catch (Exception e) {

    // TODO: handle exception

    Log.e("erro", "tidak bisa ambil data 1");

    }

    return null;

    }

    @Override

    protected void onPostExecute(String result) {

    // TODO Auto-generated method stub

    super.onPostExecute(result);

    pDialog.dismiss();

    if(success.equals("1")){

    a = new Intent (Login.this, Akunku.class);

    startActivity(a);

    finish();

    }

    else{

    TextView keterangan =

    (TextView)findViewById(R.id.keterangan);

    keterangan.setText("Maaf username atau password Anda

    Salah");

    alert.showAlertDialog(Login.this, "Login failed..",

    "Username/Password is incorrect", false);

    }

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    28

    }

    @Override

    public void onBackPressed() {

    // TODO Auto-generated method stub

    Intent i = new Intent(getApplicationContext(), Dashboard.class);

    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    startActivity(i);

    finish();

    }

    //cek internet

    public void cekInternet(){

    //memanggil pengecekan internet

    cd = new ConnectionDetector(getApplicationContext());

    isInternetPresent = cd.isConnectingToInternet();

    // check for Internet status

    if (isInternetPresent) {

    Toast.makeText(getApplicationContext(),

    "Anda Memiliki Koneksi Internet",

    Toast.LENGTH_SHORT)

    .show();

    register.setOnClickListener(this);

    login.setOnClickListener(this);

    } else {

    alert.showAlertDialog(Login.this, "Peringatan",

    "Internet tidak tersedia, Anda harus

    mengecek koneksi internet.", false);

    }

    }

    }

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    29

    g. Register.java

    /**

    * author : Yusuf Mufti

    * email : [email protected]

    * web : yusufmufti.com

    */

    package com.login;

    import java.util.ArrayList;

    import java.util.List;

    import org.apache.http.NameValuePair;

    import org.apache.http.message.BasicNameValuePair;

    import org.json.JSONObject;

    import com.yusfa.login.R;

    import android.app.Activity;

    import android.app.ProgressDialog;

    import android.content.Intent;

    import android.os.AsyncTask;

    import android.os.Bundle;

    import android.view.View;

    import android.widget.Button;

    import android.widget.EditText;

    import android.widget.Toast;

    public class Register extends Activity{

    ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();

    EditText email, password, alamat, telepon, nama;

    private static String url = "http://10.0.2.2:8080/login/register.php";

    Button submit;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.register);

    email =(EditText)findViewById(R.id.email);

    password=(EditText)findViewById(R.id.password);

    alamat =(EditText)findViewById(R.id.address);

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    30

    telepon =(EditText)findViewById(R.id.telepon);

    nama =(EditText)findViewById(R.id.nama);

    submit = (Button)findViewById(R.id.submit);

    submit.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View arg0) {

    // TODO Auto-generated method stub

    new InputData().execute();

    }

    });

    }

    public class InputData extends AsyncTask{

    String success;

    @Override

    protected void onPreExecute() {

    super.onPreExecute();

    pDialog = new ProgressDialog(Register.this);

    pDialog.setMessage("Proses mendaftar...");

    pDialog.setIndeterminate(false);

    pDialog.show();

    }

    @Override

    protected String doInBackground(String... args) {

    String strnama = nama.getText().toString();

    String stralamat = alamat.getText().toString();

    String stremail = email.getText().toString();

    String strpassword = password.getText().toString();

    String strtelepon = telepon.getText().toString();

    List params = new

    ArrayList();

    params.add(new

    BasicNameValuePair("nama", strnama));

    params.add(new

    BasicNameValuePair("alamat", stralamat));

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    31

    params.add(new

    BasicNameValuePair("email", stremail));

    params.add(new

    BasicNameValuePair("password", strpassword));

    params.add(new

    BasicNameValuePair("telepon", strtelepon));

    JSONObject json =

    jsonParser.makeHttpRequest(url,

    "POST", params);

    try {

    success = json.getString("success");

    } catch (Exception e) {

    Toast.makeText(getApplicationContext(), "Error",

    Toast.LENGTH_LONG).show();

    }

    return null;

    }

    protected void onPostExecute(String file_url) {

    // dismiss the dialog once done

    pDialog.dismiss();

    if (success.equals("1")) {

    Toast.makeText(getApplicationContext(), "Regitrasi sukses",

    Toast.LENGTH_LONG).show();

    } else {

    Toast.makeText(getApplicationContext(), "Registrasi

    gagal", Toast.LENGTH_LONG).show();

    }

    }

    }

    @Override

    public void onBackPressed() {

    // TODO Auto-generated method stub

    Intent i = new Intent(getApplicationContext(), Dashboard.class);

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    32

    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    startActivity(i);

    finish();

    }

    }

    h. SessionManager.java

    package com.login;

    /**

    * source code androidhive

    */

    import java.util.HashMap;

    import android.annotation.SuppressLint;

    import android.content.Context;

    import android.content.Intent;

    import android.content.SharedPreferences;

    import android.content.SharedPreferences.Editor;

    @SuppressLint("CommitPrefEdits")

    public class SessionManager {

    // Shared Preferences

    SharedPreferences pref;

    // Editor for Shared preferences

    Editor editor;

    // Context

    Context _context;

    // Shared pref mode

    int PRIVATE_MODE = 0;

    // nama sharepreference

    private static final String PREF_NAME = "Sesi";

    // All Shared Preferences Keys

    private static final String IS_LOGIN = "IsLoggedIn";

    public static final String KEY_NAME = "name";

    public static final String KEY_EMAIL = "email";

    // Constructor

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    33

    public SessionManager(Context context){

    this._context = context;

    pref = _context.getSharedPreferences(PREF_NAME,

    PRIVATE_MODE);

    editor = pref.edit();

    }

    /**

    * Create login session

    * */

    public void createLoginSession(String name, String email){

    // Storing login value as TRUE

    editor.putBoolean(IS_LOGIN, true);

    editor.putString(KEY_NAME, name);

    editor.putString(KEY_EMAIL, email);

    editor.commit();

    }

    /**

    * Check login method wil check user login status

    * If false it will redirect user to login page

    * Else won't do anything

    * */

    public void checkLogin(){

    // Check login status

    if(!this.isLoggedIn()){

    Intent i = new Intent(_context, Login.class);

    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    _context.startActivity(i);

    //((Activity)_context).finish();

    }

    }

    /**

    * Get stored session data

    * */

    public HashMap getUserDetails(){

    HashMap user = new HashMap();

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    34

    user.put(KEY_NAME, pref.getString(KEY_NAME, null));

    user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));

    return user;

    }

    /**

    * Clear session details

    * */

    public void logoutUser(){

    // Clearing all data from Shared Preferences

    editor.clear();

    editor.commit();

    Intent i = new Intent(_context, Login.class);

    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    _context.startActivity(i);

    }

    public boolean isLoggedIn(){

    return pref.getBoolean(IS_LOGIN, false);

    }

    }

    Sedikit tambahan,

    1. Untuk file dimens.xml di dalam folder res /value pastikan terdapat kode berikut

    ini

    16dp 16dp

    2. Kemudian untuk styles.xml di dalam folder res/value pastikan terdapat kode

    berikut ini, jika tidak ada ketikalah di dalam

    center_vertical

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    35

    wrap_content

    wrap_content

    center_horizontal

    2dp

    16dp

    bold

    #ffffff

    @null

    3. Kode tomboladd.xml di dalam folder res/drawable-hdpi

    4. Kode tombolexit.xml di dalam folder res/drawable-hdpi

  • Yusuf Mufti [email protected] 089637319180 freelance programmer

    36

    5. Androidmanifest.xml editlah menjadi seperti berikut ini

    Anda telah selesai membuat projek Register dan Login. Klik kanan projek dan pilih Run

    As Android Application Project.

    SOURCE CODE dapat diunduh di SINI