Dalam Tutorial membuat aplikasi android register/login kali ini, terdapat beberapa langkah yang
akan dilakukan, antara lain :
1. Persiapan Tools (Pra-Coding)
2. Membuat database
3. Membuat PHP untuk handle request
4. Membuat projek Android
5. Membuat Tampilan Web PHP Sederhana untuk tampil data.
- File register.php
- File login.php
- Membuat file xml di folder res layout. Sebelum membahas kodenya, saya ingin menunjukkan
struktur file di folder res sebagai berikut
- Akunku.xml
- register.xml
- login.xml
Pada xml diatas, kita menggunakan file dimes.xml dan string.xml sebagai data text.
Buka kedua file tersebut dan pastikan datanya terisi sebagai berikut :
- dimens.xml
-string.xml
Ketiga File diatas akan memiliki tampilan depan seperti berikut :
It's Time to Coding :D. saatnya kita membuat 3 layout diatas berjalan sebagaimana fungsinya.
File java terdiri atas 6 file java seperti terlihat pada gambar berikut.
- Akunku.java
/**
* Created by arhen on 04/03/15.
*/
package com.example.arhen.tugasrplii;
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 org.json.JSONArray;
import java.util.HashMap;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.akunku);
session.checkLogin();
username = user.get(SessionManager.KEY_USERNAME);
first_name = user.get(SessionManager.KEY_FIRST_NAME);
@Override
public void onBackPressed(){
Intent i = new Intent(getApplicationContext(), Login.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
}
- AlertDialogManager.java
/**
* Created by arhen on 04/03/15.
*/
package com.example.arhen.tugasrplii;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
//setting OK Button
alertDialog.setButton("OK",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//showing alert message
alertDialog.show();
}
}
- JSONParser.java
/**
* Created by arhen on 04/03/15.
*/
package com.example.arhen.tugasrplii;
import android.util.Log;
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 java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
- Login.java
/**
* Created by arhen on 04/03/15.
*/
package com.example.arhen.tugasrplii;
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.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
Button login;
Intent a;
EditText username, password;
TextView verify;
String url, success;
SessionManager session;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState) ;
setContentView(R.layout.login);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
url="http://192.168.122.1/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...!",
"Silahkan isi username dan password",false);
}
}
});
verify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a = new Intent(Login.this, Register.class);
startActivity(a);
}
});
}
public class AmbilData extends AsyncTask<String,String,String> {
ArrayList<HashMap<String, String>> contactList = new ArrayList<
HashMap<String, String>>();
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Login.this);
pDialog.setMessage("Loading Data...");
pDialog.setIndeterminate(false);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
JSONParser jParser = new JSONParser();
try {
success = json.getString("success");
if (success.equals("1")) {
for (int i = 0; i < hasil.length(); i++) {
JSONObject c = hasil.getJSONObject(i);
} else {
Log.e("Error", "tidak bisa ambil data 0");
}
} catch (Exception e) {
Log.e("Error", "Tidak bisa ambil data 1");
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
pDialog.dismiss();
if(success.equals("1")){
a = new Intent(Login.this, Akunku.class);
startActivity(a);
finish();
}else{
Toast.makeText(getBaseContext(), "Username/password
incorrect!!", Toast.LENGTH_SHORT).show();
alert.showAlertDialog(Login.this, "Login Failed..",
"Username/Password is incorrect",false);
}
}
}
}
- Register.java
package com.example.arhen.tugasrplii;
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.TextView;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* Created by arhen on 05/03/15.
*/
public class Register extends Activity{
ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
EditText first_name,last_name,email,username,password;
Intent a;
Button register;
TextView verify;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
register = (Button)findViewById(R.id.btn_register);
verify = (TextView)findViewById(R.id.verify);
first_name = (EditText)findViewById(R.id.fld_first);
last_name = (EditText)findViewById(R.id.fld_last);
email = (EditText)findViewById(R.id.fld_email);
username = (EditText)findViewById(R.id.fld_username);
password = (EditText)findViewById(R.id.fld_pwd);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new InputData().execute();
}
});
verify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a = new Intent(Register.this, Login.class);
startActivity(a);
}
});
@Override
protected String doInBackground(String... args) {
JSONObject json =
jsonParser.makeHttpRequest(url,
"POST", params);
try {
success = json.getString("success");
} catch (Exception e) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Error",
Toast.LENGTH_SHORT).show();
}
});
}
return null;
}
@Override
public void onBackPressed(){
Intent i = new Intent(getApplicationContext(),Login.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
}
- SessionManager.java
package com.example.arhen.tugasrplii;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import java.util.HashMap;
/**
* Created by arhen on 05/03/15.
*/
@SuppressLint("CommitPrefEdits")
public class SessionManager {
//Shared Preferences
SharedPreferences pref;
//context
Context _context;
//nama sharepreference
private static final String PREF_NAME = "Sesi";
//constructor
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
/**
* Check Login method wil check user Login status
* If false it will redirect user to Login page
* Else won't do anything
* */
/**
* Get stored session data
* */
/**
* 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);
}
}
Untuk memastikan project android berjalan dengan lancar saat di run nanti. Pastikan pada
bagian AndroidManifest.xml terisi kode seperti berikut. Jika tidak ada, maka tambahkanlah.
Anda telah selesai membuat projek Register dan Login. Klik kanan projek dan pilih Run
As – Android Application Project. Atau Klik tombol run dan pilih Device Android.
- Ketika program dijalankan, Activity yang berjalan pertama kali adalah login.xml
- Karena kita belum memiliki data apapun pada database, maka pindah
ke register.xml dengan memilih “ Register Here “ .
- Kemudian isi data sesuai kemauan anda. Setelah itu tekan tombol “
Register Account “. Maka Data anda telah tersimpan pada Databases.
Tekan tombol back untuk kembali.
- Kemudian login dengan username dan password anda,
berikut tampilan saat anda berhasil login dan data yang tersimpan pada database
5. Membuat Tampilan Web PHP Sederhana untuk tampil data.
Kadang dalam aplikasi Client Server seperti ini, perlu pula data yang tersimpan untuk diakses
dan dilihat melalui tampilan web. Untuk Melakukan hal ini, buatlah sebuah file tampil.php pada
direktori xampp/htdocs/login/. ( Berada satu folder dengan file php login.php dll ).
kemudian ketik kode berikut :
- tampil.php
Isilah beberapa data tambahan pada database “login” anda. Anda dapat melakukannya lewat
Androip Apps yang telah anda buat atau via phpmyamin.
Untuk mengakses File Web ini, ketik pada browser anda dengan alamat “
http://localhost/login/tampil.php “ . Berikut Tampilan dari Website Tampil data yang dibuat.