Memahami Object Intent

Sampai disini, kita sudah tahu tentang penggunaan object 'Intent' untuk memanggil activity yang lain. Kini saatnya kita membuat semacam rangkuman dan memahami lebih daetil tentang bagaimana object 'Intent' melakukan keajaibannya.

Pertama, kita sudah mempelajari bahwa kita bisa memanggil activity lain dengan melewatkan 'action'-nya ke konstruktor dari object 'Intent':
startActivity(new Intent("com.example.usingintent.SecondActivity"));
'Action' tersebut (di dalam contoh ini "com.example.usingintent.SecondActivity") juga dikenal sebagai nama komponen. Ini digunakan untuk mengidentifikasi activity/app target yang ingin kita panggil. Kita juga bisa menuliskan nama komponen dengan menentukan nama class dari activity tersebut bila ada dalam satu project yang sama, seperti berikut:
startActivity(new Intent(this, SecondActivity.class")); 
Kita juga bisa membuat object 'Intent' dengan melewatkan suatu konstanta 'action' dan 'data' seperti berikut:
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://diansano.blogspot.co.id"));
startActivity(i);
Bagian 'action' akan mendefinisikan apa yang ingin kita lakukan, sementara bagian 'data' akan berisi data untuk activity target sebagai sasaran 'action'. Kita juga bisa melewatkan 'data' ke object 'Intent' dengan menggunakan method 'setData()' seperti berikut:
Intent i = new Intent("android.intent.action.VIEW")
i.setData(Uri.parse("https://diansano.blogspot.co.id"));
startActivity(i);
Dalam contoh tersebut, kita menunjukkan bahwa kita ingin menampilkan suatu laman web pada URL tertentu. OS Android akan mencari semua activity yang akan cocok dengan request tersebut. Proses tersebut disebut dengan 'resolusi intent'. Latihan berikutnya akan membahas lebih detil tentang bagaimana activity bisa menjadi target activity lainnya.

Untuk beberapa intent, tidak harus menetapkan data. Misalnya, untuk memmilih suatu kontak dari app Contacts, kita menetapkan 'action' dan kemudian menunjukkan jenis MIME dengan menggunakan method 'setType()' seperti berikut:
Intent i = new Intent("android.content.Intent.ACTION_PICK")
i.setType(ContactsContract.Contacts.CONTENT_TYPE);
Method 'setType()' secara eksplisit akan menetapkan jenis data MIME untuk menunjukkan jenis data yang akan dikembalikan/dihasilkan. Jenis MIME untuk ContactsContract.Contacts.CONTENT_TYPE adalah "vnd.android.cursor.dir/contact."

Selain menentukan 'action', 'data', dan 'jenis MIME', suatu object 'Intent' bisa juga menentukan suatu kategori. Suatu kategori akan mengelompokkan beberapa activity menjadi beberapa unit logikal sehingga Android akan menggunakannya untuk filtering lebih lanjut. Latihan-latihan berikutnya akan membahas tentang kategori lebih detil.

Untuk ringkasannya, suatu object 'Intent' akan berisi informasi berikut:
  • Action
  • Data
  • Type
  • Category

No comments: