Mengenal Intent Android

Assalamu‘alaikum wa rahmatullahi wa barakatuh

Pada postingan sebelumnya kita sudah bisa mebuat sebuah aplikasi sederhana dengan menggunakan 1 activity yang belum liat bisa lihat disini. Nah gmana caranya jika kalian membuat aplikasi yang memiliki lebih dari 1 activity dan bagaimana cara berpindah dari 1 activity ke activity lainya dengan atau tanpa membawa data? atau bagaimana caranya jika aplikasi yang kalian buat ingin mengakses fungsi telpon pada android? hayo gmana?

Gausah bingung, disini kita akan jawab dan bahas pertanyaan itu. Jadi bagaimana caranya? caranya adalah kita menggunakan Intent.

Intent adalah sebuah mekanisme untuk melakukan action suatu komponen dari aplikasi yang sama atau ke aplikasi lain. Manfaatnya apa ya?

Biasanya di gunakan untuk berpindah dari satu activity ke activity lain dengan atau tanpa membawa data.

Berfungsi juga untuk menjalankan background service, contohnya jika kita mau download atau upload data ke server.

Bisa juga dugunakan untuk component Broadcast.

Intent Terbagi menjadi dua :

Explicit Intent
Biasanya digunakan untuk mengaktifkan komponen-komponen aplikasi yang sama, misalnya pindah activity ke activity lain, atau ngactifkan background service untuk upload data ke server.

Implicit Intent
Kalau yang ini biasanya di pakai untuk mengaktifkan komponen aplikasi lain, Misalnya : Mengaktifkan fungsi sms, dial phone, map google, atau kirim pesan via gmail.

Gmana sudah kebayang kan? jangan bayangin yang lain ya.

Selanjutnya, sebenernya prosesnya gmana sih si intent ini bekerja? kok bisa mengaktifkan komponen lain, dan yang sudah saya sebutkan diatas.

Berikut ilustrasi dari proses kerja intent

  1. Activity A membuat Intent untuk melakukan sebuah Action dengan data object yang ada.
  2. Sistem Android akan mencari aplikasi yang cocok Berdasarkan Intent filter
  3. Activity pada aplikasi yang cocok akan ditampilkan. (2017 : dicoding)

Agar kita lebih mengenal dan memahami intent lebih dalam, kita langsung praktekan saja ya :

1. Buat Project Baru


2. Edit Tampilan Utama Aplikasi

Buka file XML dengan nama activity_main.xml, file ini biasanya auto generate disaat kita buat project baru. Edit file XML tersebut seperti source code dibawah ini :

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
    android:layout_margin="20dp"
    tools:context="com.apps.zulham.mengenalintent.MainActivity">

    <Button
        android:id="@+id/btn_subA_pertama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ke Sub Activity Pertama"
        android:layout_marginBottom="20dp"/>

    <EditText
        android:id="@+id/et_input_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Input Data"/>

    <Button
        android:id="@+id/btn_subA_kedua"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ke Sub Activity Kedua"
        android:layout_marginBottom="20dp"/>

    <Button
        android:id="@+id/btn_activity_dial"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ke Activity Dial"/>

</LinearLayout>

3. Membuat Activity Baru

Membuat Activity baru dengan cara pada Package utama (bukan yang ada AndroidTest).

klik kanan -> New -> Activity -> Empty Activity seperti dibawah ini:

Beri nama Activity tersebut dengan SubActivityPertama.

Edit SubActivityPertama pada berkas activity_sub_pertama.xml (folder res/layout), sebagai berikut:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.apps.zulham.mengenalintent.SubActivityKedua">

    <TextView
        android:id="@+id/tvSubPertama"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Selamat Datang di Sub Activity Pertama"
        android:textSize="18sp"
        tools:layout_editor_absoluteX="34dp"
        tools:layout_editor_absoluteY="244dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Oh iya jika Android Studio kalian sudah update ke 2.3, jika kalian buat activity baru pasti otomatis layout xml kalian menggunakan layout ConstraintLayout.

jadi berikan juga contoh source code xml yang menggunakan ConstraintLayout, jika ingin tahu lebih lanjut mengenai constraint layout silahkan main – main ke websitenya developer.android.com ya. berikut contoh codenya yang menggunakan constrain layout.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context="com.apps.zulham.mengenalintent.SubActivityPertama">

   <TextView
        android:id="@+id/tvSubPertama"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Selamat Datang di Sub Activity Pertama"
        android:textSize="18sp"
        tools:layout_editor_absoluteX="34dp"
        tools:layout_editor_absoluteY="244dp" />
</android.support.constraint.ConstraintLayout>

Pada SubActivityPertama, hanya menampilkan teks dan tidak mengharapkan data masukan apapun.

4. Step Selanjutnya Buat Sub Activity Kedua
Ulangi langkah nomor 3 untuk membuat SubActivityKedua, dan Edit pada berkas activity_sub_kedua.xml (folder res/layout), sebagai berikut:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.apps.zulham.mengenalintent.SubActivityKedua">

    <TextView
        android:id="@+id/tvTerimaData"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Data yang dikirim"
        android:textSize="18sp"
        />
</RelativeLayout>

5. Edit SubActivityKedua dan MainActivity

Pada SubActivityKedua text yang akan di tampilkan adalah text yang dikirim dari MainActivity. Maka dari itu kita harus mengedit SubActivityKedua.java agar data yang dikirim nanti bisa keterima dengan benar, berikut sourcodenya :

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class SubActivityKedua extends AppCompatActivity {

    public static String KEY_DATA = "DATA";
    private String terimaData = null;
    private TextView tvTerimaData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub_kedua);

        tvTerimaData = (TextView) findViewById(R.id.tvTerimaData);
        terimaData = getIntent().getStringExtra(KEY_DATA);
        tvTerimaData.setText(terimaData);
    }
}

Pada MainActivity kita harus edit codenya agar bisa pindah ke SubActivityPertama tanpa membawa data, pindah ke SubActivityKedua dengan membawa data dan juga mengaktifkan Dial Telepon. Berikut Source Codenya :

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private Button btnSubPertama, btnSubKedua, btnDialTelepon;
    private String dataKirim;
    private EditText edtDataKirim;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnSubPertama = (Button) findViewById(R.id.btn_subA_pertama);
        btnSubKedua = (Button) findViewById(R.id.btn_subA_kedua);
        btnDialTelepon = (Button) findViewById(R.id.btn_activity_dial);

        edtDataKirim = (EditText) findViewById(R.id.et_input_data);

        btnSubPertama.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, SubActivityPertama.class);
                startActivity(intent);
            }
        });

        btnSubKedua.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dataKirim = edtDataKirim.getText().toString();
                Intent intent = new Intent(MainActivity.this, SubActivityKedua.class);
                intent.putExtra(SubActivityKedua.KEY_DATA, dataKirim);
                startActivityForResult(intent, 0);
            }
        });

        btnDialTelepon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:081297780620"));
                startActivity(intent);
            }
        });
    }
}

6. Run Project Kalian Menggunakan Smartphone Atau Emulator

Berikut tampilan aplikasi jika kalian berhasil membuat dan menjalankanya :

1. 2. 

3.  4.

Gambar 1. = Tampilan MainActivity
Gambar 2. = Tampilan SubActivityPertama
Gambar 3. = Tampilan SubActivityKedua
Gambar 4. = Tampilan Aplikasi Dial Phone

Gmana? seru kan? semangat terus ya belajarnya.

Terimakasih

Wassalamu ‘alaikum Wr. Wb

 

Advertisements

2 thoughts on “Mengenal Intent Android

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s