Apa Itu Android Intents

Intent adalah topik dasar untuk developer Android. Tidak mungkin membangun aplikasi Android tanpa bertemu dengan intent. Pada tutorial ini, saya akan mengajarkanmu semuanya tentang intent.

Apa itu Intent?

Dalam sebuah pertandingan sepakbola, rekan satu tim mengoper bola di lapangan dengan tujuan untuk memasukkannya ke gawang lawan. Bola dioper dari penjaga gawang ke pemain bertahan. Lalu, bola sampai ke pemain tengah, dan jika semua berjalan seperti rencana, satu penyerang menyarangkannya di gawang lawan. Ini mengasumsikan penjaga gawang lawan tidak bisa menghalau bola.

Di Android, kemampuan mengirim pesan dimungkinkan dengan objek Intent. Dengan bantuan intent, komponen Android bisa meminta fungsional dari komponen Android lain. Saat kamu membuka aplikasi Instagram di handphonemu dan menggunakannya untuk mengambil foto, kamu menggunakan intent. Intent juga membantu mengkomunikasikan bagian dari sebuah aplikasi; perpindahan dari satu layar (aktifitas) ke layar lain dimungkinkan dengan intent.

Kita bisa melihatnya seperti ini: semua komponen (aplikasi dan layar) dari perangkat Android itu terisolasi satu sama lain. Satu-satunya cara mereka bisa berkomunikasi adalah dengan menggunakan intent.

Memulai Aktifitas dengan Intent
Seperti yang disebutkan sebelumnya, kamu bisa menggunakan intent untuk emulai berbagai komponen: aktifitas, servis, dan penerima broadcast.

Untuk memulai se buah aktifitas, kamu perlu menggunakan fungsi startActivity(intent).

Berikut adalah potongan kode yang menunjukkan bagaimana memulai aktifitas lain dengan menggunakan intent.

Intent numbersIntent = new Intent(MainActivity.this, NumbersActivity.class);
startActivity(numbersIntent);

Pertama, kita buat sebuah objek Intent dan melemparnya ke kelas NumbersActivity. Lalu kita mulai membuat aktifitas baru menggunakan intent tersebut.

Jenis Intent
Android mendukung dua jenis intent: eksplisit dan implisit. Ketika aplikasi menentukan komponen target dalam sebuah intent, itu adalah intent eksplisit. Saat aplikasi tidak menentukan target komponen, itu adalah intent implisit.

Contoh Intent Eksplisit
Potongan kode di iatas adalah contoh intent eksplisit. Lihat lagi kode tersebut.

Intent numbersIntent = new Intent(MainActivity.this, NumbersActivity.class);
startActivity(numbersIntent);

Di sini, NumbersActivity adalah target komponen dari MainActivity. Ini artinya NumbersActivity adalah komponen yang akan dipanggil oleh Android. Penting untuk diingat (seperti pada contoh di atas), intent eksplisit biasanya digunakan di dalam aplikasi, karena di situlah developer memiliki kuasa penuh atas kelas apa yang akan dipanggil.

Contoh Intent Implisit
Berikut adalah intent implisit:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(“”));
startActivity(intent);

Jika kamu memiliki kode di atas dalam kode aplikasi, aplikasimu bisa memanggil komponen browser untuk URL tertentu menggunakan intent. Tapi bagaimana sistem Android mengenali komponen mana yang bisa bereaksi atas suatu intent?

Sebuah komponen bisa didaftarkan melalui intent filter untuk aksi spesifik. Intent filter bisa didaftarkan untuk komponen secara statis pada AndroidManifest.xml. Berikut adalah contoh yang mendaftarkan sebuah komponen sebagai web viewer:

Menggunakan Intent dalam sebuah Aplikasi
Kita tulis sejumlah kode untuk melihat bagaimana intent bekerja. Pada bagian ini, kamu akan membuat sebuahaplikasi kecil untuk mencoba kedua jenis intent. Aplikasi tersebut akan memiliki form untuk mengisi nama pertama dan nama terakhir. Saat tombol Submit diklik, kedua nilai akan diteruskan ke aktifitas lain. Akan ada juga tombol untuk memanggil browser pilihanmu. Browser yang dipilih akan membuka

Buka Android Studio dan isi MainActivity. Kamu bisa mengatur nama package menjadi com.tutstplus.code.android.droidintent.

MainActivity akan dimulai dengan beberapa import dan deklarasi kelas:

package com.tutsplus.code.android.droidintent;
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 {
}

Lalu kamu akan menimpa fungsi onCreate() untuk menginisialisasi aktifitas dengan state tersimpan apa saja dan layout aktifitas (kita akan buat nanti).

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // button handlers go here
}

Berikutnya kamu akan mendapat referensi untuk setiap tombol yang didefinisikan di layout dan menempelkan click listener ke masing-masing tombol tersebut.

final Button submitButton = (Button) findViewById(R.id.submit_button); submitButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EditText firstName = (EditText) findViewById(R.id.first_name_text); EditText lastName = (EditText) findViewById(R.id.last_name_text); String firstNameString = firstName.getText().toString(); String lastNameString = lastName.getText().toString(); Intent submitIntent = new Intent(MainActivity.this, ShowActivity.class); submitIntent.putExtra(“firstNameString”, firstNameString); submitIntent.putExtra(“lastNameString”, lastNameString); startActivity(submitIntent); }
});
Untuk tombol Submit, kamu atur sebuah OnClickListener untuk menjalankan sebuah aksi saat tombol diklik. Saat klik terjadi, kita ambil nama pertama dan terakhir dari view, dan mengirimkannya ke aktifitas berikutnya: ShowActivity. Target komponen disebut secara eksplisit dalam intent, membuat ini sebuah contoh intent eksplisit.

final Button browserButton = (Button) findViewById(R.id.browser_button); browserButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(“”)); startActivity(intent); }
});
Untuk tombol browser, OnClickListener akan membuat sebuah intent baru untuk memanggil aplikasi apapun yang cocok dengan filter: sebuah ACTION_VIEW yang bisa menangani sebuah URL web. Dengan kata lain, membuka sebuah browser web. Jika kamu punya lebih dari satu browser terinstall di smartphonemu, kamu akan diminta untuk memilih salah satu untuk menjalankan aksi membuka website. Ini adalah contoh intent implisit.

Layout MainActivity
Layout untuk MainActivity akan sangat sederhana untuk tutorial ini.

Di sini kamu punya dua TextView dan dua EditText yang menunjukkan First Name dan Last Name. Ada juga tombol untuk mengirim nama, dan satu lagi untuk memanggil browser.

Membuat ShowActivity
Untuk melengkapi aplikasi kita, kita perlu membuat sebuah aktifitas untuk menangani intent eksplisit di atas. Buat sebuah activity bernama ShowActivity. Ini adalah aktifitas di mana hasil pengisian nama ditampilkan. Berikut adalah isinya:

package com.tutsplus.code.android.droidintent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class ShowActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show); Bundle extras = getIntent().getExtras();
String inputFirstName = extras.getString(“firstNameString”);
String inputLastName = extras.getString(“lastNameString”); TextView showFirstName = (TextView) findViewById(R.id.show_first_name);
TextView showLastName = (TextView) findViewById(R.id.show_last_name); showFirstName.setText(inputFirstName);
showLastName.setText(inputLastName);
}
}

Pada aktifitas ini, kita mulai dengan mengambil string dari MainActivity. Kamu bisa mendapat referensi ke intent yang memanggil aktifitas ini dengan fungsi getIntent(). Lalu kamu bisa mengakses string yang dilempar menggunakan getExtras().getString(). Akhirnya, setelah mendapat instance TextView dari layout, kamu tampilkan nilai yang didapat.

Layout ShowActivity
Layout untuk aktifitas ini sederhana:

Menguji aplikasi
Sekarang kamu bisa build aplikasi dan mencobanya pada perangkat Androidmu!

Melempar Data menggunakan Bundle
Kamu juga bisa menggunakan Bundle saat melempar data menggunakan intent.

Kelas Bundle membuat kamu bisa menyimpan data kompleks dan mendukung jenis data seperti string, char, boolean, intener, dan lain-lain. Berikut adalah contoh bagaimana bagian dari MainActivity.java jika kamu menggunakan Bundle.

// Creating Bundle object
Bundle b = new Bundle();
// Storing data into bundle
b.putString(“firstNameString”, firstNameString);
b.putString(“lastNameString”, lastNameString);
// Creating Intent object
Intent submitIntent = new Intent(MainActivity.this, ShowActivity.class);
// Storing bundle object into intent
submitIntent.putExtra(b);
startActivity(submitIntent);

Kesimpulan
Pada tutorial ini, kita mendapat pengenalan singkat tentang penggunaan intent untuk membuat aktifitas pada Android. Kita lihat perbedaan antara intent eksplisit dan implisit, dan membuat contoh yang menggunakan kedua jenis intent tersebut.

Kamu bisa baca lebih jauh tentang intent pada dokumentasi Android. Mengerti bagaimana intent bekerja sangat penting. Saat kamu membuat berbagai aplikasi, kamu akan menemui berbagai jenis intent dan berbagai cara menggunakannya.

Sementara itu, lihatlah tutorial lain tentang pengembangan aplikasi Android!