Tipe data apa yang dapat dikirim oleh Intent?

Contoh Project untuk implementasi Implicit dan Explicit Intent di Android

Intent merupakan salah satu komponen penting dalam Aplikasi Android. Intent berguna untuk berpindah dari satu Activity
ke Activity lain secara explicit dengan atau tanpa membawa data. Data yang dikirim via Intent bisa berupa Tipe data umum seperti
String, int, float, double, Long, boolean. Dan juga data Object yang mengimplement Serializable atau Parceable.
Selain itu Intent juga bisa memanggil komponen dari aplikasi lain. Contohnya Mengakses browser, maps, contact, dial/phone call.
Selain Activity, Intent juga bisa menjalakan komponen lain seperti Service dan Broadcast Receiver.
Pada contoh program ini akan menampilkan implementasi Intent secara implicit dan explicit;

Referensi : //developer.android.com/guide/coamponents/intents-filters.html
Professional Android 4 Application Development Halaman 166 - 183


Untuk teori dari sample ini bisa dibaca di sini
CodeLab contoh program ini ada di sini
Ikuti CodeLab Android Berbahasa Indonesia di www.dicoding.com

Semoga bermanfaaat.

Page 2

Contoh Project untuk implementasi Implicit dan Explicit Intent di Android

Intent merupakan salah satu komponen penting dalam Aplikasi Android. Intent berguna untuk berpindah dari satu Activity
ke Activity lain secara explicit dengan atau tanpa membawa data. Data yang dikirim via Intent bisa berupa Tipe data umum seperti
String, int, float, double, Long, boolean. Dan juga data Object yang mengimplement Serializable atau Parceable.
Selain itu Intent juga bisa memanggil komponen dari aplikasi lain. Contohnya Mengakses browser, maps, contact, dial/phone call.
Selain Activity, Intent juga bisa menjalakan komponen lain seperti Service dan Broadcast Receiver.
Pada contoh program ini akan menampilkan implementasi Intent secara implicit dan explicit;

Referensi : //developer.android.com/guide/coamponents/intents-filters.html
Professional Android 4 Application Development Halaman 166 - 183


Untuk teori dari sample ini bisa dibaca di sini
CodeLab contoh program ini ada di sini
Ikuti CodeLab Android Berbahasa Indonesia di www.dicoding.com

Semoga bermanfaaat.

Halo sobat coders, pada pembahasan kali ini kita akan membahas Intent.

Apa itu Intent?

Intent adalah sebuah kelas programming di Android yang berfungsi untuk perpindahan halaman. Sehingga Ketika kita ingin berpindah activity atau aplikasi, maka kita bisa menggunakan Intent.

Intent dibagi 2 macam:

1. Intent Explisit, yaitu Berpindah dari satu activity ke activity yang lain dalam satu project. Misalnya ketika kita berpindah halaman dari halaman Login ke Home.

2. Intent Implicit, yaitu untuk memanggil fungsi activity yang sudah ada di fungsi internal atau diluar lingkup aplikasi. Misalnya Ketika mengakses Camera, Dial Number, Browser, Gallery, dll.

Intent juga bisa melakukan pengiriman data, misalnya dari page A menuju page B dengan membawa data. Baik berupa satuan maupun sekelompok data dengan function putExtra().

Setelah kita membahas teori Intent sekarang saat nya kita praktekin. Ada 5 jenis Intent yang akan kita praktekin guys…

Intent Explisit tanpa membawa data.

.Buka Android Studio > Create New Project > Empty Activity > beri nama Project > Finish.

Ubah kode activity_main.xml menjadi seperti berikut. Jangan lupa beri nama/id Button yang mau kita beri aksi perpindahan activity.

Buat Activity baru sebagai Activity perpindahan. Klik kanan pada package project > New > Activity > Empty Activity.

Beri nama Activity > Klik Finish

Ubah kode activity_second.xml atau Activity yang baru kita buat menjadi kode berikut.

Buka MainActivity.kt dan tambahkan kode berikut.

btn_explisit adalah id button yang kita beri aksi yaitu saat button di klik maka terjadi perpindahan halaman dari MainActivity ke SecondActivity.

Didalam obyek intent terdapat class asal selalu menggunakan this yang menandakan obyek kelas saat ini. Kelas tujuan selalu menggunakan ::class.java

startActivity( ) adalah sebuah class yang digunakan untuk memulai aktivitas. Artinya saat Button di MainActivity di klik maka akan memulai perpindahan activity ke SecondActivity.

Intent Explisit dengan membawa data.

Selanjutnya kita akan membuat Intent Explisit dengan membawa data.

Mari kita tambahkan kode berikut di activity_main.xml dan jangan lupa beri nama/id pada button.

Sehingga kode menjadi seperti berikut.

Setelah selesai kita akan membuat Activity baru sebagai halaman tujuan. Disini kita beri nama DataActivity.

Buka activity_data.xml dan tambahkan dua TextView yang di berfungsi mengambil data nama dan stok.

Pada MainActivity.kt tambahkan companion object, const val yang artinya variabel tersebut nilainya tetap dan tidak berubah. Nah, supaya variabel ini bisa diakses dari kelas lain, anda harus memasukannya ke dalam companion object. Hal ini karena tidak ada tipe static di Kotlin, karena itulah anda perlu merubahnya menjadi object supaya bisa diakses dari luar kelas.

Kemudian tambahkan kode berikut didalam function onCreate( ).

Dalam konteks diatas,key yang digunakan untuk mengirim dan mengambil nilai data adalah sama, yaitu EXTRA_NAME (yang bernilai “extra_name”). Nilai dari data yang dikirimkan melalui intent disimpan ke dalam variabel name bertipe data string. Fungsi dari EXTRA_NAME sendiri yaitu sebagai Key. untuk mengirim data dengan intent kita perlu mengirimnya dalam format putExtra(Key,Value). Dengan Key bertindak sebagai kunci yang dipakai untuk mengambil data di activity tujuannya, dan value adalah data yang akan dikirimkan.

Jadi kalau dalam bahasa gampangnya dalam bentuk dialog seperti ini:
kode : “Aku mau ambil data nih?”
sistem : “data yang mana? data kan banyak?”
kode : “yang key-nya ‘EXTRA_NAME ‘ sis (red: sistem)”
sistem : “ohh oke de’, ini data value-nya”

Nilai dari variabel age yang bertipe data integer berasal dari getIntent().getIntExtra(Key, nilai default). Key yang digunakan untuk mengirimkan dan mengambil data adalah EXTRA_AGE (yang bernilai “extra_age”). Nilai default di sini merupakan nilai yang akan digunakan jika ternyata datanya kosong, disini kita menggunakan angka 0. Data kosong atau nilainya null bisa terjadi ketika datanya memang tidak ada, atau key-nya tidak sama.

Catatan : Key yang dikirimkan melalui putExtra() harus sama dengan key sewaktu mengambil nilai dari data yang dikirimkan melalui getStringExtra().

Sekarang saatnya kita kirim data nya. Tambahkan kode berikut pada MainActivity.kt.

Kita memanfaatkan metode putExtra() untuk mengirimkan data bersamaan dengan obyek Intent. Sedangkan metode putExtra() itu sendiri merupakan metode yang menampung pasangan key-value dan memiliki beberapa pilihan tipe input seperti berikut: Boolean, list, Int, dll. Hampir semua tipe data untuk input value didukung oleh metode putExtra().

Catatan : Key yang dikirimkan melalui putExtra() harus sama dengan key sewaktu mengambil nilai dari data yang dikirimkan melalui getStringExtra().

Selanjutnya kita akan membahas Intent membawa data dengan Parcelable. Dengan menggunakan Parcelable tentu akan semakin hemat dan cepat kode.

Intent Explisit membawa data dengan Parcelable.

Parsel disini bukan parsel yang biasa diberikan dari satu orang ke orang lain pada saat lebaran ya!!!

Parcelable adalah suatu interface pada pemrograman Android, yang memungkinkan suatu instansi dari kelas/objek untuk bisa disimpan dan diambil kembali dari sebuah Parcel. Sedangkan Parcel sendiri merupakan suatu kontainer untuk menampung kelas tersebut.

Yuk langsung gaskeun!

Buka activity_main.xml dan tambahkan satu Button lagi.

Tambahkan Activity baru dan beri nama ParcelableActivity sebagai halaman perpindahan data dengan Parcelable.

Pada activity_parcelable.xml tambahkan satu TextView.

Sekarang kita buat data class yang berfungsi untuk menyimpan model data suatu obyek. Data classes akan membantu kita saat aplikasi semakin kompleks. Contohnya, data class bisa kita gunakan untuk melakukan koneksi ke server untuk request API atau akses ke database lokal dengan SQLite.

klik kanan pada package project klik New > Kotlin File/Class > Class > Beri nama Student.

Pada Student.kt atau class Student ubah kode menjadi seperti berikut.

Anotasi @Parcelize di atas nama kelas, digunakan untuk memberi tanda bahwa kelas ini yang dipilih untuk menjadi parcelable. @Parcelize juga otomatis men-generate semua kode yang digunakan untuk implemetasi parcelize sebelumnya.

Variable name, age, dan subject merupakan data yang mau dikirim. tanda tanya (?) merupakan null safety agar tidak terkena error NullPointerException.

Parcelable adalah suatu interface yang memungkinkan kita melakukan pengiriman objek dari suatu activity ke activity lain. Seperti yang diketahui bahwa di dalam Intent kita dapat menyisipkan data dengan tipe-tipe tertentu seperti string, int, double pada Intent. Tetapi tidak dengan tipe kompleks seperti objek, ArrayList, dll. Di sinilah peran besar Parcelable.

Selanjutnya buka ParcelableActivity.kt dan tambahkan kode berikut.

EXTRA_STUDENT merupakan variabel static bertipe data string dan bernilai “extra_student”. Berfungsi sebagai key untuk mendapatkan value data yang dikirim.

Pada function onCreate( ) buatlah kode menjadi berikut.

Dengan menggunakan Parcelable kita hanya cukup membungkus itu semua ke dalam obyek parcelable.Melalui getIntent().getParcelableExtra(Key), Anda dapat mengambil nilai obyek studentyang sebelumnya telah dikirim hanya dengan satu variabel, bayangkan jika kita tidak menggunakan parcelable, maka kita harus mengirim data satu per satu. Jika datanya sedikit mungkin tidak masalah tapi jika datanya puluhan, tentu akan merepotkan kan?

Lalu, bagaimana jika kita ingin mengirimkan kumpulan obyek parcelable ke activity lain? Untuk mengirimkan kumpulan data, kita bisa memanfaatkan arraylist dan metode putParcelableArrayListExtra, contoh kode.

Dan ketika mengambil kumpulan datanya, kita bisa menggunakan kode ini.

Selanjutnya buka kembali MainActivity.kt untuk menaruh data yang akan dikirim.

Coba jalankan program. Dengan Parcelable akan membuat kode lebih singkat dan cepat bukan?.

Next kita akan membuat Intent explisit dengan feedback.

Intent Explisit dengan Feedback.

Terkadang ketika kita sudah pindah Activity dan Activity tersebut menginputkan sesuatu kadang kita ingin ada nilai balik ke MainActivity.

Ayo Praktek.

Pada activity_main.xml tambahkan satu button dan jangan lupa beri id/nama button nya.

Tambah Activity baru sebagai halaman perpindahan.

Buka activity_feedback.xml dan tambahkan TextView dan Button.

Selanjutnya Pada FeedbackActivity.kt ubah kode menjadi berikut.

Kita membuat sebuah intent tanpa ada inputan apapun di konstruktornya. Kemudian kita meletakkan variabel value ke dalam metode putExtra(Key, Value),dengan EXTRA_HELLO bertipekan static string dan bernilai “extra_hello”. Kemudian kita jadikan obyek intent, yang telah dibuat sebelumnya menjadi parameter dari setResult(Activity.RESULT_OK, intent). Setelah itu, kita panggil method finish() untuk menutup FeedbackActivity. Ketika FeedbackActivity telah tertutup sempurna, maka metode onActivityResult( ) pada MainActivity akan dijalankan.

Selanjutnya kita berpindah ke MainActivity.kt dan tambahkan kode berikut.

Untuk memanggil suatu activity dan menunggu hasil yang akan dikembalikannya, kita perlu menggunakan method startActivityForResult( )

Kita akan menjalankan sebuah activity melalui intent untuk nilai balik ke activity yang menjalankan di mana nilai REQUEST_CODE adalah 100. Nilai REQUEST_CODE boleh bebas tidak wajib hnaya 100, nilai 100 hanya untuk pancingan nilai Integer.

Request code ini sederhananya adalah suatu nilai integer yang mengidentifikasi activity yang kita panggil. Kode ini diperlukan karena bila suatu activity mengembalikan suatu nilai, kita harus punya cara untuk mengidentifikasinya. Misalnya, kita mungkin memanggil banyak activity pada saat yang sama, dan beberapa activity mungkin tidak merespon dengan segera (misalnya menunggu jawaban dari suatu server). Bila activity merespon, kita perlu request code tersebut untuk menentukan activity mana yang merespon ini.

Tambahkan function onActivityResult( ) dibawah function onCreate( ) pada MainActivity.kt.

Di sinilah MainActivity akan merespon terhadap nilai balik yang dikirimkan oleh FeedbackActivity.kt. Pada baris 3 kita melakukan pengecekan, jika requestcode adalah 100 dan pada baris 4 jika resultcode adalah RESULT_OK maka button feedback akan berubah text menjadi hai sobat.

Method onActivityResult( )memiliki tiga argument:

Next kita akan membahas materi terakhir yaitu Intent Implicit.

Intent Implisit.

Sebelumnya kita sudah membahas Intent Explisit, nah sekarang kita akan bahas Intent Implicit.

Tambahkan satu Button pada activity_main.xml.

Kita buat Activity baru sebagai halaman yang kita tuju dan beri nama ImplicitActivity.

Buka kembali mainActivity.kt dan tambahkan kode berikut.

Pada halaman ImplicitActivity barulah kita melakukan aksi Intent Implicit.

Buka activity_implicit.xml dan tambahkan enambutton berikut.

Tambahkan kode berikut pada ImplicitActivity.kt.

Baru saja kita mengimplementasikan penggunaan intent secara implicit untuk melakukan proses dial sebuah nomor telepon.
Pada bagian Intent(Intent.ACTION_DIAL, Uri.parse(“tel:”+phoneNumber)) kita menggunakan inputan Intent(ACTION, Uri) pada konstruktor sewaktu menciptakan obyek Intent di mana:
Action : Intent.ACTION_DIAL
Uri : Uri.parse(“tel:”+phoneNumber)
Variabel ACTION_DIAL menentukan intent filter dari aplikasi-aplikasi yang bisa menangani action tersebut.
Di sini aplikasi yang memiliki kemampuan untuk komunikasi akan muncul pada opsi pilihan, sebagaimana ditampilkan ke pengguna.
Uri adalah sebuah untaian karakter yang digunakan untuk mengidentifikasi nama, sumber, atau layanan di internet sesuai dengan RFC 2396.
Pada Uri.parse(“tel:”+phoneNumber) kita melakukan parsing Uri dari bentuk teks string menjadi sebuah obyek uri dengan menggunakan metode static parse(String).
Dimana “tel” adalah sebuah skema yang disepakati untuk sumber daya telepon dan phoneNumber adalah variabel string yang bernilai “081210841382”,
Skema lain dari Uri seperti “geo” untuk peta, “http” untuk browser.

Untuk membuka aplikasi ponsel dan memanggil nomor ponsel, gunakan aksi ACTION_DIAL dan tetapkan nomor ponsel dengan menggunakan skema URI yang didefinisikan di bawah ini. Saat aplikasi ponsel dibuka, nomor ponsel akan ditampilkan namun pengguna harus menekan tombol Panggil untuk memulai panggilan telepon.

Untuk meminta pengguna memilih informasi tertentu dari kontak, misalnya nomor ponsel, alamat email, atau tipe data lainnya, gunakan aksi ACTION_PICK dan tetapkan tipe MIME ke salah satu tipe materi yang tertera di bawah ini, misalnya CommonDataKinds.Phone.CONTENT_TYPE untuk mendapatkan nomor ponsel kontak itu.

Untuk membuka laman web, gunakan aksi ACTION_VIEW dan tetapkan URL web dalam data intent.

Untuk meminta pengguna memilih satu file misalnya dokumen atau foto dan mengembalikan referensi ke aplikasi Anda, gunakan aksi ACTION_GET_CONTENT dan tetapkan tipe MIME yang Anda inginkan.

Untuk membuka aplikasi kamera dan menerima foto atau video yang dihasilkan, gunakan aksi ACTION_IMAGE_CAPTURE atau ACTION_VIDEO_CAPTURE

Untuk menampilkan daftar alarm, gunakan aksi ACTION_SHOW_ALARMS.

Proses Intent Implicit:

  • Aplikasi kita menjalankan intent untuk ACTION_DIAL melalui startActivity().
  • Sistem Android akan melakukan seleksi terhadap semua aplikasi yang memiliki kemampuan untuk menangani action tersebut.
    Sistem Android akan menentukan aplikasi mana saja yang bisa memproses action berdasarkan intent filter yang telah ditentukan di berkas AndroidManifest.xml,
    pada masing-masing aplikasi.Sistem Android akan menampilkan opsi aplikasi-aplikasi mana saja yang bisa menangani action tersebut ke pengguna.
    Pengguna memilih salah satu opsi aplikasi dan kemudian sistem Android akan me-routing ke activity pada aplikasi yang dipilih yang memiliki intent-filter untuk aksi ACTION_DIAL.
  • Aplikasi yang dipilih pun muncul di layar dengan nomor telepon yang sudah diatur.

Selamat kalian sudah menyelesaikan materi Intent pada Android.

Gimana? Menarik bukan? Ayo Follow!!!

Jika ingin melihat code lebih lengkap atau mendownload file klik dibawah ini .

Klik Disini

Video yang berhubungan

Postingan terbaru

LIHAT SEMUA