Ada 2 tipe intent dalam pemrograman android,
1. Implicit intent adalah intent yang memanggil fungsi activity yang sudah ada di fungsi internal android seperti Dial Number, Open Browser dan lainya. Berikut contoh penggunaan code implicit intent,
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
startActivity(intent);
2. Explicit Intent adalah intent yang memanggil Activity lain yang masih dalam 1 project. Berikut adalah contoh penggunaan code explicit intent,
Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
startActivity(intent);
Intent dapat digunakan untuk transfer data antar Activity. Pada saat sebuah Activity memanggil Activity yang lain, Intent dapat menyimpan data informasi yang ikut dikirimkan pada pemanggilan tersebut. Kita dapat mengirimkan data ke activity tujuan dengan method putExtra() dan method getExtra() ketika menerima atau memanggil data tersebut.
Mungkin masih bingung melihat code-code diatas dan bagaimana menggunakannya, oleh sebab itu mari kita buat contoh aplikasi mengenai pembahasan intent ini dengan membuat aplikasiContact Selection.
1. Buat project baru di Android Studiodengan nama Application Name "Contact Selection"
2. Pilih minimum SDK Android 4.0 (Ice Cream Sandwich) kemudian pilih "Blank Activity" dan ganti nama Activity Name dengan "ContactIntentActivity"
3.Buat activity baru dengan cara, klik kanan pada app di dalam project yang tadi kita buat pilih New -> Activity -> Blank Activity
4. Isikan Activity Name dengan "ContactPageActivity" dan Layout Name dengan "activity_contact_page"
5. Buka file "activity_contact_intent.xml" pada folder res/layout dan modifikasi layout atau code didalamnya seperti berikut dengan menambahkan komponen ListView di dalam LinearLayout.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
6. Buka file "activity_contact_page.xml" pada folder res/layout dan modifikasi layout atau code didalamnya seperti berikut dengan menambahkan beberapa komponen TextView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/contactName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<TextView
android:id="@+id/contactPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/contactWebsite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
7. Buatlah object Contact dengan cara klik kanan pada com.android.contactselection New -> Java Class.
8. Isikan dengan nama class ContactObject dan klik Finish.
9. Pada class ContactObject buatlah variable dengan nama : name, phone dan website dengan type String seperti berikut,
import java.io.Serializable;
public class ContactObject implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String phone;
private String website;
public ContactObject(String name, String phone, String website) {
super();
this.name = name;
this.phone = phone;
this.website = website;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getPhone()
{
return phone;
}
public void setPhone(String phone)
{
this.phone = phone;
}
public String getWebsite()
{
return website;
}
public void setWebsite(String website)
{
this.website = website;
}
}
10. Buka ContactIntentActivity didalam folder java, dan isikan code seperti berikut
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class ContactIntentActivity extends ActionBarActivity {
private ListView intentListView;
private List<ContactObject> contactsList;
private ArrayAdapter<String> adapter;
private final int PHONE = 0;
private final int WEBSITE = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_intent);
intentListView = (ListView) findViewById(R.id.listView1);
contactsList = new ArrayList<ContactObject>();
contactsList.add(new ContactObject("Android One", "111-1111-1111", "www.android.com"));
contactsList.add(new ContactObject("Android Two", "222-2222-2222", "www.android.com"));
contactsList.add(new ContactObject("Android Three", "333-3333-3333", "www.android.com"));
contactsList.add(new ContactObject("Android Four", "444-4444-4444", "www.android.com"));
List<String> listName = new ArrayList<String>();
for (int i = 0; i < contactsList.size(); i++)
{
listName.add(contactsList.get(i).getName());
}
adapter = new ArrayAdapter<String>(ContactIntentActivity.this,
android.R.layout.simple_list_item_1, listName);
intentListView.setAdapter(adapter);
intentListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent i = new Intent(ContactIntentActivity.this, ContactPageActivity.class);
i.putExtra("Object", contactsList.get(position));
startActivityForResult(i, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data)
{
if (data == null) {
return;
}
Bundle resultData = data.getExtras();
String value = resultData.getString("value");
switch (resultCode)
{
case PHONE:
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + value)));
break;
case WEBSITE:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + value)));
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_contact_intent, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
return super.onOptionsItemSelected(item);
}
}
11. Buka ContactPageActivity dan isikan kode berikut :
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class ContactPageActivity extends ActionBarActivity implements View.OnClickListener {
private final int PHONE = 0;
private final int WEBSITE = 1;
private TextView contactName;
private TextView contactPhone;
private TextView contactWebsite;
private ContactObject contactObject;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_page);
contactName = ( TextView )findViewById(R.id.contactName);
contactPhone = ( TextView )findViewById(R.id.contactPhone);
contactWebsite = (TextView)findViewById(R.id.contactWebsite);
Bundle extras = getIntent().getExtras();
if( extras == null)
return;
contactObject = (ContactObject)
getIntent().getSerializableExtra("Object");
contactName.setText(contactObject.getName());
contactPhone.setText("Phone: " + contactObject.getPhone());
contactWebsite.setText("Website: " + contactObject.getWebsite());
contactPhone.setOnClickListener(this);
contactWebsite.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_contact_page, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.contactPhone:
Intent i = new Intent();
i.putExtra("value", contactObject.getPhone());
setResult(PHONE, i);
finish();
break;
case R.id.contactWebsite:
i = new Intent();
i.putExtra("value", contactObject.getWebsite());
setResult(WEBSITE, i);
finish();
break;
}
}
}
12. Pada AndroidManifest.xml tambahkan 2 permission untuk mengijinkan aplikasi konek ke internet dan melakukan panggilan telepon.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
13. Jalankan aplikasinya.
Demikian penjelasan dan contoh aplikasi android mengenai Intent, semoga bermanfaat.
0 Komentar