Sebelum sistem android dapat menjalankan aplikasi menu insert ini, sistem terlebih dahulu harus tahu bahwa komponen aplikasi memang ada, yakni dengan cara membaca file AndroidManifest.xml. Pada file manifest dideklarasikan komponen aplikasi. Misalnya untuk contoh menu insert dibutuhkan perijinan akses internet untuk dapat melakukan koneksi ke localhost dari emulator dengan alamat "http://10.0.2.2". Dimana pada localhost inilah file setUser.php tersimpan.
Jadi, pertama kali pastikan Anda telah update isi file AndroidManifest.xml sebagai berikut.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.contoh"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
//untuk koneksi internet
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.contoh.InsertActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Berdasarkan "android.intent.category.LAUNCHER" pada file manifest, class InsertActivity.java lah yang akan diakses pertama kali ketika sistem dijalankan. Berikut soruce code untuk InsertActivity.java yang tersimpan pada folder "src" dari struktur direktori android.
package com.example.contoh;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class InsertActivity extends Activity {
private EditText editUserName;
private EditText editPassword;
private Button buttonSignup;
public static final String urlContoh = "http://10.0.2.2/contoh/setUser.php"; //koneksi database ke localhost
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insert);
editUserName = (EditText) findViewById(R.id.editTextUserName);
editPassword = (EditText) findViewById(R.id.editTextPassword);
buttonSignup = (Button) findViewById(R.id.buttonSignup);
buttonSignup.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
try {
String result = InsertActivity.getRequestFromServer(urlContoh+"?username="+editUserName.getText().toString()+"&password="+editPassword.getText().toString());
Toast.makeText(InsertActivity.this, result, Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(InsertActivity.this, "Error: "+ e.getMessage(), Toast.LENGTH_LONG).show();
}
Intent myIntent = new Intent(view.getContext(),InsertActivity.class);
startActivity(myIntent);
finish();
}
});
}
public static String getRequestFromServer(String url){
try {
Class<?> strictModeClass = Class.forName("android.os.StrictMode", true, Thread.currentThread()
.getContextClassLoader());
Class<?> threadPolicyClass = Class.forName("android.os.StrictMode$ThreadPolicy", true, Thread
.currentThread().getContextClassLoader());
Class<?> threadPolicyBuilderClass = Class.forName("android.os.StrictMode$ThreadPolicy$Builder", true,
Thread.currentThread().getContextClassLoader());
Method setThreadPolicyMethod = strictModeClass.getMethod("setThreadPolicy", threadPolicyClass);
Method detectAllMethod = threadPolicyBuilderClass.getMethod("detectAll");
Method penaltyMethod = threadPolicyBuilderClass.getMethod("penaltyLog");
Method buildMethod = threadPolicyBuilderClass.getMethod("build");
Constructor<?> threadPolicyBuilderConstructor = threadPolicyBuilderClass.getConstructor();
Object threadPolicyBuilderObject = threadPolicyBuilderConstructor.newInstance();
Object obj = detectAllMethod.invoke(threadPolicyBuilderObject);
obj = penaltyMethod.invoke(obj);
Object threadPolicyObject = buildMethod.invoke(obj);
setThreadPolicyMethod.invoke(strictModeClass, threadPolicyObject);
} catch (Exception ex) {
Log.w("Thread Policy", ex);
}
String result = "Succeed";
HttpClient client = new DefaultHttpClient();
HttpClientParams.setRedirecting(client.getParams(), true);
HttpGet request = new HttpGet(url);
try{
HttpResponse response = client.execute(request);
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
int lineCount = 0;
while((line = reader.readLine()) != null){
if(lineCount>0) str.append("\n");
str.append(line);
}
in.close();
result = str.toString();
Log.w("get Request", "asli : "+result);
if(result.indexOf("<") > 0){
result = result.substring(0, result.indexOf("<"));
}
Log.w("get Request", "proses : "+Html.fromHtml(result));
return Html.fromHtml(result).toString();
}catch(Exception ex){
ex.printStackTrace();
result = "Error";
}
return result;
}
}
Perhatikan bagian "http://10.0.2.2/contoh/setUser.php", bahwa file setUser.php (query untuk menyimpan data username dan password) tersimpan pada folder "contoh" di htdocs. Berikut source code untuk file setUser.php.
<?php
$username = $_GET['username'];
$password = $_GET['password'];
include "connect_db.php";
$query = "insert into tbuser (username,password) values('".$username."','".$password."')";
$result = mysql_query($query, $link) or die('Error query: '.$query);
echo $result;
?>
Perhatikan bagian include "connect_db.php", bahwa source code untuk koneksi ke root dari localhost terdapat pada file connect_db.php.
<?php
$link = mysql_connect('localhost', 'root', '') or die('Cannot connect to the DB');
mysql_select_db('dbcontoh') or die('Cannot select the DB');
?>
Terakhir, tampilan layout dari Menu Insert ini tersimpan pada file activity_insert.xml yang dideklarasikan pada InsertActivity.java bagian setContentView(R.layout.activity_insert). Berikut soruce code untuk activity_insert.xml yang tersimpan pada folder "layout" dari struktur direktori android.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
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=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Username" />
<EditText
android:id="@+id/editTextUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password" />
<EditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<Button
android:id="@+id/buttonSignup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SIGN UP" />
</LinearLayout>
Silakan lakukan running program. Selamat! Anda telah membuat Menu Insert seperti terlihat dibawah ini.
Silakan lihat posting "Contoh Aplikasi Client-Server Android" pada blog ini untuk mengetahui cara membuat aplikasi android pertama kali untuk Menu Insert ini.

Tidak ada komentar:
Posting Komentar