AndroidKotlinTutorial

Intent di Android Studio

GubugCoding.com – Tutorial Intent di Android Studio, kali ini saya akan membagikan tutorial mengenai intent di android studio

intent android studio

Apa itu Intent

Intent di Android Studio merupakan salah satu cara berkomunikasi antar komponen didalam aplikasi seperti, fragment, activity, service, dll.

Kegunaan Intent

Intent didalam pembuatan aplikasi android memiliki beberapa fungsi umum, diantaranya yaitu :

  • berpindah antar activity dengan membawa data maupun tidak
  • menjalankan sebuah background service, seperti akses REST API ke server
  • mengirimkan sebuah data hasil obyek ke aplikasi yang dibutuhkan

Itulah kegunaan umum dalam penggunaan Intent di Android Studio

Jenis-jenis Intent

Dalam implementasi, Intent memiliki dua jenis, yaitu Explicit Intent dan Implicit Intent, berikut penjelasannya

Explicit Intent/Intent Explicit

Explicit Intent/Intent Explicit merupakan jenis intent yang dapat digunakan guna menjalankan komponen/activity didalam sebuah aplikasi

Sebagai contoh, jika kita sedang didalam MainActivity lalu ingin berpindah ke activity lain seperti ProfileActivity maka kodenya akan seperti berikut :

val pindahIntent = Intent(this@MainActivity, ProfileActivity::class.java)
startActivity(pindahIntent)

Implicit Intent/Intent Implicit

Implicit Intent/Intent Implicit merupakan jenis intent yang tidak membutuhkan nama dari class yang akan dijalankan.

Dengan Implicit Intent, kalian dapat menjalankan komponen dari aplikasi lain yang dapat merespon request intent yang kita buat

Secara umum, implicit intent digunakan untuk menjalankan fitur dari aplikasi lain seperti Phone, Kamera, Gallery, Email dll.

Contoh Pertama : Intent untuk mengirim/membuka email (Intent.ACTION_SENDTO)

Intent ini akan membawa dari aplikasi utama ke aplikasi GMAIL di Android, dengan atau tidak membawa data

berikut untuk kodenya :

 val mIntent = Intent(Intent.ACTION_SENDTO)
 mIntent.data = Uri.parse("mailto:khaidir@gubugcoding.com")
 startActivity(Intent.createChooser(mIntent, "Email"))

kode diatas akan membuka pesan baru diaplikasi Gmail dengan sent to / kirim ke khaidir@gubugcoding.com

Contoh Kedua : Intent untuk membuka ke Phone/Telephone (Intent.ACTION_DIAL) atau untuk memanggil nomor telepon

Intent ini akan membawa dari aplikasi utama ke aplikasi Phone di Android, dengan atau tidak membawa data

berikut untuk kodenya :

val mIntent = Intent(Intent.ACTION_DIAL)
mIntent.data = Uri.parse("tel:0281634xxx")
startActivity(mIntent)

kode diatas berarti akan membuka ACTION_DIAL dan dengan nomor 0281634xxx

Contoh Ketiga : Intent untuk membuka link facebook, instagram, twitter, dan youtube

Diintent kali ini sebenarnya hanya membuka ACTION_VIEW jika alamat link nya misalkan https://www.facebook.com/yourprofile maka akan membuka tab baru atau membuka aplikasi lain yang cocok

Jika aplikasi Facebook sudah terinstal, maka akan membuka aplikasi Facebook tersebut, jika tidak akan dibuka melalui browser. Begitu juga dengan link lainnya seperti twitter, youtube, maupun instagram

berikut untuk kodenya :

openNewTabWindow("https://www.facebook.com/yourprofile/")
.
.
.
fun openNewTabWindow(urls: String) {
      val uris = Uri.parse(urls)
      val intents = Intent(Intent.ACTION_VIEW, uris)
      val b = Bundle()
      b.putBoolean("new_window", true)
      intents.putExtras(b)
      context?.startActivity(intents)
}

Ada sangat banyak Action Intent di Android Studio, untuk lebih mempelajarinya kalian bisa lihat di Intent | Android Developers

Baca Juga : Cara Membuat Aplikasi Android

Contoh Penerapan Intent

Berikut contoh-contoh penerapan penggunaan Intent di Android Studio :

Intent Pindah Activity

Kali ini Intent akan berpindah dari activity ke activity lain dengan membawa sebuah data. Dimana Intent tujuan dapat menerima/mengolah data tersebut

Analogi : Kita memiliki 2 buah Class/Activity, yaitu MainActivity dan ProfileActivity, dimana dari class MainActivity akan berpindah ke ProfileActivity dengan membawa data. Data yang dikirim adalah nama dan alamat

Hal pertama yang perlu disiapkan adalah buat object untuk menampung data dari intent pengirim, tambahkan kode berikut di ProfileActivity

class ProfileActivity: AppCompatActivity() {
.
.
companion object {
  const val EXTRA_NAME = "extra_name"
  const val EXTRA_ADDRESS = "extra_address"
}
.
.
val name = intent.getStringExtra(EXTRA_NAME)
val address = intent.getStringExtra(EXTRA_ADDRESS)
Toast.makeText(this@ProfileActivity, Your Name : $name and Your Address : $address, Toast.LENGHT_LONG).show()
.
.
}

Dari kode diatas artinya kita akan menampung data di object EXTRA_NAME dan EXTRA_ADDRESS lalu mengambil datanya dengan intent.getStringExtra dan ditampilkan melalui Toast

Berikutnya siapkan data dari MainActivity yang akan dikirim, contoh :

val moveIntent = Intent(this@MainActivity, ProfileActivity::class.java)
moveIntent.putExtra(ProfileActivity.EXTRA_NAME, "GubugCoding")
moveIntent.putExtra(ProfileActivity.EXTRA_ADDRESS, "Indonesia")
startActivity(moveIntent)

Dari kode diatas artinya kita akan berpindah activity, dari MainActivity ke ProfileActivity dengan membawa data yang diinputkan melalui .putExtra

Intent dengan Menggunakan Parcelable

Selanjutnya, yaitu Intent dengan Parcelable, sebenarnya untuk cara hampir sama, yang berbeda dari segi fungsi dan kegunaan

Jika menggunakan String seperti contoh sebelumnya, data yang dikirim terbatas atau sedikit, dengan menggunakan Parcelable maka data yang akan kita kirim dapat mencakup banyak data

Dengan tambahan disini yaitu membuat suatu data class terlebih dahulu, untuk contohnya saya membuat data class Human

Lalu isi data class dengan data yang akan kita kirim

Human.kt

@Parcelize
data class Human (
 val name: String = null,
 val address: String = null
) : Parcelable

**catatan = kode diatas menggunakan extensi kotlin, untuk menggunakannya tambahkan kode berikut di build.gradle (app)

androidExtensions {
    experimental = true
}

Berikutnya di ProfileActivity tambahkan kode berikut untuk menampung data dan menggunakan data dari MainActivity

ProfileActivity.kt

class ProfileActivity: AppCompatActivity() {
.
.
companion object {
  const val EXTRA_HUMAN = "extra_human"
}
.
.
val human = intent.getParcelableExtra(EXTRA_HUMAN) as Human
Toast.makeText(this@ProfileActivity, Your Name : $(human.name.toString()) and Your Address : $(human.address.toString()), Toast.LENGHT_LONG).show()
.
.
}

Selanjutnya kita buat data yang akan dikirim dari MainActivity

MainActivity.kt

val human = Human("Gubug Coding", "Indonesia")
val moveIntent = Intent(this@MainActivity, ProfileActivity::class.java)
moveIntent.putExtra(ProfileActivity.EXTRA_HUMAN, human)
startActivity(moveIntent)

Dari kode diatas, dapat dilihat bahwa kita akan mengirim data yang dimasukan ke data class Human dan dikirim putExtra ke ProfileAcivity

Baca Juga : Cara Download MP3 di Youtube

Kesimpulan

Penggunaan Intent pada pembuatan aplikasi android memanglah sangat sering digunakan. Tanpa adanya intent maka aplikasi yang kita buat hanya memiliki 1 tampilan activity saja dan tidak bisa pindah dari satu activity ke activity lain

Selain dari Intent yang saya jelaskan diatas, masih banyak fungsi intent yang belum saya tuliskan disitu, seperti Pending Intent, Intent Result, Intent Service dll.

Penggunaan Intent hanya dapat diimplementasikan di Activity saja, Intent tidak bisa digunakan untuk berpindah antar Fragment

FAQ

Apakah bisa menggunakan Intent didalam Class ?

Bisa, penggunaan Intent selain menggunakan this diactivity, dapat menggunakan context untuk didalam class / object

Intent di Fragment

Intent tidak bisa digunakan untuk berpindah antar fragment

Bagaimana cara berpindah antar fragment ?

Untuk berpindah antar fragment, kalian dapat menggunakan fungsi commit

Bagaimana mengirim data antar fragment ?

Untuk mengirim data antar fragment dapat menggunakan Bundles, yang akan saya jelaskan diartikel selanjutnya

Bagaimana mengirim data antar activity ?

Untuk mengirim data antar activity kalian bisa menggunakan Parcelable, atau StringExtra

Related Articles

Leave a Reply

Back to top button
Close

Adblock Detected

Tolong Matikan AdBlock dulu Gan :)