Part 2: Praktek memanggil aplikasi yang sudah kita buat (MetuWebBrowser) dari aplikasi kita dengan implicit Intent.
Masih ingatkan anda tutorial [ANDROID NO.6: Mengenal Intent dan Kegunaannya (Praktek Mengirim Data Antar Activity dalam Satu Aplikasi)]? Nah, pada tutorial ini kita akan praktek tidak hanya transfer data antar Activity dalam satu aplikasi, tapi interaksi antar aplikasi.
Kita akan menggunakan Metu WebBrowser yang sudah kita buat kemarin pada tutorial sebelumnya sebagai object penerima Intent. Yuk kita bahas,
Pembahasan kita adalah Explicit Intent dan Implicit Intent. Nah, sebetulnya, Explicit Intent sudah kita bahas pada tutorial PART 1 kemarin. Itu adalah Explicit Intent. Apa itu Explicit Intent?
Coba perhatikan kembali source code pada tutorial pertama kita seperti berikut ini,
Lihat gambar 1:
Coba baca kodenya, kita membuat Intent dengan menggunakan dua (2) parameter. Parameter yang kedua itulah (DisplayActivity.class) yang dimaksud Class Java. Class inilah yang digunakan sebagai identifier. Nah, explicit intent ini kebanyakan digunakan interaksi antar activity dalam satu aplikasi. Lalu bagaimana cara mengirim dan menangkap data yang dikirim? Nahhh, coba buka kembali PART 1 yang sudah menjelaskan panjang dan lebar tentang Explicit Intent ini.
Lihat gambar 1.1:
Nah, yang kita akan kita gunakan adalah parameter action dan data untuk action , bukan packageContext dan Class. :)
Coba perhatikan contoh berikut:
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.mediatutorial.web.id"));
Coba lihat, kita memakai parameter action nya adalah Intent.ACTION_VIEW dan data action nya adalah Uri.parse(”http://www.mediatutorial.web.id));
Intent di atas akan memanggil SEMUA APLIKASI/KOMPONEN pada Android yang sudah teregister pada system Android dengan action VIEW tersebut. Nanti, Android System akan menampilkan semuanya kemudian pengguna bisa memilih aplikasi mana yang akan dipakai.
Pada kode di atas, akan menampilkan semua aplikasi yang teregister sebagai web browser yang terinstall di hp Android anda. Mudah bukan?
Lihat gambar 2:
Mari kita lihat contoh berikutnya:
intent = new Intent(Intent.ACTION_CALL,
Uri.parse("tel:(+62)12345789"));
Kode di atas akan menampilan semua aplikasi yang sudah teregister sebagai action Caller pada hp Android anda.
Contoh yang lain:
intent = new Intent(Intent.ACTION_EDIT,
Uri.parse("content://contacts/people/1"));
Kode di atas akan menampilan semua aplikasi yang sudah teregister sebagai editor untuk contact anda. Gampang kan?
Bila ada beberapa aplikasi yang ditemukan teregister dengan ACTION yang diberikan maka semua aplikasi tersebut akan ditampilkan, pengguna bisa memilih untuk menggunakan aplikasi yang mana. Tetapi bila hanya ada 1 saja aplikasi yang ditemukan maka Android System langsung akan membuka aplikasi tersebut.
Lanjutt...
Eits, ada pertanyaan, bagaimana cara meregister aplikasi yang kita buat supaya bisa masuk dalam kategori action tertentu??
MUDAH, baca terus sampai bawah ya,,, :)
Ah, ada pertanyaan lagi, contoh di atas hanya menampilkan Intent.ACTION_VIEW, Intent.ACTION_CALL, Intent.ACTION_EDIT, apakah ada action yang lain??
TENTU!!
Coba buka – buka documentasi tentang Intent di http://developer.android.com :P
Buuuaanyak sekali yang bisa anda eksplorasi dari Developer Android tersebut.
<intent-filter/> ini bisa kita definisikan dalam AndroidManifest.xml.
Lihat gambar 3:
Perhatikan, dalam AndroidManifest.xml kita di atas, saya memberikan dua (2) buah <Intent-Filter/> :)
<intent-filter> pertama adalah default yang sudah diberikan Android Studio.
Kemudian yang kedua adalah yang kita berikan sebagai register untuk ACTION_VIEW.
Apa maksud kode di atas?? Simak terus...
Perhatikan, di dalam intent-filter, pasti minimal ada action dan category, meskipun ada tambahkan seperti data pada intent-filter kedua.
Pada intent-filter pertama, sebagai action adalah MAIN, artinya, activity tersebut merupakan point entry saat aplikasi berjalan. Jadi saat launching maka akan memanggil activity ini meskipun tidak ada input data/intent sama sekali. Mudah mengerti kan?
Juga sebagai category adalah LAUNCHER, artinya aplikasi tersebut terdaftar dalam launcher di hanphone.
Nah, lanjuttt,,,
<intent-filter/> kedua kita menambahkan action nya adalah VIEW sedangkan category nya adalah DEFAULT. Hayo, coba cari sendiri di google maksudnya apa,,, :P
Data disana merupakan input data yang diterima oleh activity.
Nah, pertama kita harus membuat sebuah aplikasi baru. Aplikasi ini kita gunakan untuk memanggil aplikasi WebBrowser.
Coba perhatikan susunan design dari aplikasi pemanggil yang akan kita buat seperti berikut ini:
Lihat gambar 4:
Kita hanya akan membuat sebuah Button dan memberikan method onClick pada button tersebut.
Hem, anda sudah tahukan cara menambahkan method onClick pada button ini? Jangan bilang kalo anda lupa bagaimana cara menambahkannya yaa... :P
Bila betul – betul lupa, coba lihat tutorial PART 1.
Lanjut....
Method yang kita tambahkan adalah sebagai berikut,
Lihat gambar 5:
Itu adalah method yang kita gunakan sebagai event pada button. Sudah tahu kan dimana method tersebut harus diletakkan?? :)
Lihat, kita menggunakan kode:
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(”http://www.mediatutorial.web.id));
Kita akan mencari semuaaaaaa aplikasi yang teregister sebagai ACTION_VIEW dan mengirimkan data berupa Uri diatas. Mudah bukan??
Lanjutt...
Sekarang, kita akan membuka project membuat Browser kita yang kemarin. Bila belum pernah buka/praktek, bisa dilihat di sini -> .
OK, buka project Web Browser kita, pertama yang harus dilakukan adalah me-register Aplikasi Web Browser kita ke Android System. Untuk meregister, kita bisa menambahkan <inten-filter/> tag ke dalam AndroidManifest.xml
Lihat kode dibawah,
Lihat gambar 6:
Anda bisa lihat, kita menambahkan <intent-filter> action, category, sekaligus data. Tiga (3) hal ini sudah kita bahas di atas.
Mudah bukan??? Kode di atas digunakan untuk meregister aplikasi MetuWebBrowser ke dalam Android system.
Yang kedua, adalah kita akan menambahkan beberapa baris kode, agar MetuWebBrowser kita ini bisa menangkap Intent yang dikirimkan oleh aplikasi pemanggil.
Nah, untuk menambahkannya, kita bisa sedikit otak – atik method onCreate() dalam class MainActivity.java, lihat kode berikut,
Lihat gambar 7:
Cobalah membaca kode diatas, mudah bukan membacanya??
Mari kita bahas,
Intinya adalah kita menangkap intent yang dikirim kemudian memasukkannya ke dalam variabel ‘data’. Variabel ‘data’ itu sendiri merupakan object Uri.
INGAT, DISINI kita menggunakan object Uri. Bukan String :)
Nah, kita juga akan membuat object url.
Anda bisa lihat, url yang kita tangkap kemudian dijadikan string dengan method toString();
Kemudian baru kita masukkan ke dalam method loadUrl().
Perhatikan kode url = new URL(data.getScheme(), data.getHost(),data.getPath());
Coba bila belum tahu, cari saja di google, apa maksud getScheme(), getHost(), getPath() :)
Ah, ada pertanyaan, method loadUrl() pada object webBrowserKu memiliki parameter yang HARUS bertipe String,lihat kode,
webBrowserKu.loadUrl();
Bisakah kita langsung menangkap Intent kemudian langsung memasukkan kedalam parameter untuk loadUrl() yang bertipe string seperti kode berikut?
Lihat gambar 8:
Ya, tentu bisa :) Semua tergantung kreatifitas kita kan,,,
OK, dua kode baris terakhir hanya menset supaya EditText sebagai address bertuliskan sama dengan url halaman website yang dibuka.
Mudah bukan???
Nah, sekarang cobalah running aplikasi pemanggil anda, dan lihat, pasti nanti akan muncul pilihan WebBrowser yang bisa anda pilih, salah satunya adalah MetuWebBrowser yang sudah kita modifikasi tadi.
Mudah – mudahan bermanfaat,
Salam
PART YANG LAIN:
Part 1: Mengirim Data ke Activity Tertentu dan Menampilkannya
Part 2: Memanggil Activity Aplikasi Tertentu dari Aplikasi kita (halaman ini)
Part 3: Mengirim Data ke Activity Pada Aplikasi Lain dan Menampilkannya (SILAHKAN ANDA KERJAKAN SENDIRI)
===================
DAFTAR CODE
MainActivity.java
MainActivity.java
Explicit Intent
Explicit intent adalah Intent yang secara ekplisit mendefinisikan komponen yang harus dipanggil oleh Android System dengan menggunakan Class Java sebagai identifier-nya. Bingung? :P makanya ayo diterusin bacanya :PCoba perhatikan kembali source code pada tutorial pertama kita seperti berikut ini,
Lihat gambar 1:
Coba baca kodenya, kita membuat Intent dengan menggunakan dua (2) parameter. Parameter yang kedua itulah (DisplayActivity.class) yang dimaksud Class Java. Class inilah yang digunakan sebagai identifier. Nah, explicit intent ini kebanyakan digunakan interaksi antar activity dalam satu aplikasi. Lalu bagaimana cara mengirim dan menangkap data yang dikirim? Nahhh, coba buka kembali PART 1 yang sudah menjelaskan panjang dan lebar tentang Explicit Intent ini.
Implicit Intent
Implicit Intent adalah intent yang memanggil aplikasi dengan memberikan parameter action dan data untuk action. Ingat, parameter nya adalah action dan data untuk action. Masih ingatkah bahwa kemarin kita saat membuat parameter disugihi bantuan penulisan kode seperti berikut:Lihat gambar 1.1:
Nah, yang kita akan kita gunakan adalah parameter action dan data untuk action , bukan packageContext dan Class. :)
Coba perhatikan contoh berikut:
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.mediatutorial.web.id"));
Coba lihat, kita memakai parameter action nya adalah Intent.ACTION_VIEW dan data action nya adalah Uri.parse(”http://www.mediatutorial.web.id));
Intent di atas akan memanggil SEMUA APLIKASI/KOMPONEN pada Android yang sudah teregister pada system Android dengan action VIEW tersebut. Nanti, Android System akan menampilkan semuanya kemudian pengguna bisa memilih aplikasi mana yang akan dipakai.
Pada kode di atas, akan menampilkan semua aplikasi yang teregister sebagai web browser yang terinstall di hp Android anda. Mudah bukan?
Lihat gambar 2:
Mari kita lihat contoh berikutnya:
intent = new Intent(Intent.ACTION_CALL,
Uri.parse("tel:(+62)12345789"));
Kode di atas akan menampilan semua aplikasi yang sudah teregister sebagai action Caller pada hp Android anda.
Contoh yang lain:
intent = new Intent(Intent.ACTION_EDIT,
Uri.parse("content://contacts/people/1"));
Kode di atas akan menampilan semua aplikasi yang sudah teregister sebagai editor untuk contact anda. Gampang kan?
Bila ada beberapa aplikasi yang ditemukan teregister dengan ACTION yang diberikan maka semua aplikasi tersebut akan ditampilkan, pengguna bisa memilih untuk menggunakan aplikasi yang mana. Tetapi bila hanya ada 1 saja aplikasi yang ditemukan maka Android System langsung akan membuka aplikasi tersebut.
Lanjutt...
Eits, ada pertanyaan, bagaimana cara meregister aplikasi yang kita buat supaya bisa masuk dalam kategori action tertentu??
MUDAH, baca terus sampai bawah ya,,, :)
Ah, ada pertanyaan lagi, contoh di atas hanya menampilkan Intent.ACTION_VIEW, Intent.ACTION_CALL, Intent.ACTION_EDIT, apakah ada action yang lain??
TENTU!!
Coba buka – buka documentasi tentang Intent di http://developer.android.com :P
Buuuaanyak sekali yang bisa anda eksplorasi dari Developer Android tersebut.
<intent-filter/>
Tag <intent-filter/> digunakan sebagai kode untuk meregister aplikasi yang kita buat. Nah, disini kita bisa menambahkan action apa saja sehingga aplikasi kita nanti bisa dipanggil oleh Android system.<intent-filter/> ini bisa kita definisikan dalam AndroidManifest.xml.
Lihat gambar 3:
Perhatikan, dalam AndroidManifest.xml kita di atas, saya memberikan dua (2) buah <Intent-Filter/> :)
<intent-filter> pertama adalah default yang sudah diberikan Android Studio.
Kemudian yang kedua adalah yang kita berikan sebagai register untuk ACTION_VIEW.
Apa maksud kode di atas?? Simak terus...
Perhatikan, di dalam intent-filter, pasti minimal ada action dan category, meskipun ada tambahkan seperti data pada intent-filter kedua.
Pada intent-filter pertama, sebagai action adalah MAIN, artinya, activity tersebut merupakan point entry saat aplikasi berjalan. Jadi saat launching maka akan memanggil activity ini meskipun tidak ada input data/intent sama sekali. Mudah mengerti kan?
Juga sebagai category adalah LAUNCHER, artinya aplikasi tersebut terdaftar dalam launcher di hanphone.
Nah, lanjuttt,,,
<intent-filter/> kedua kita menambahkan action nya adalah VIEW sedangkan category nya adalah DEFAULT. Hayo, coba cari sendiri di google maksudnya apa,,, :P
Data disana merupakan input data yang diterima oleh activity.
PRAKTEK memanggil Aplikasi Web Browser dari Aplikasi lain
Yuk kita praktek memanggil aplikasi Metu WebBrowser yang sudah kita buat kemarin,Nah, pertama kita harus membuat sebuah aplikasi baru. Aplikasi ini kita gunakan untuk memanggil aplikasi WebBrowser.
A.Membuat aplikasi pemanggil
Coba perhatikan susunan design dari aplikasi pemanggil yang akan kita buat seperti berikut ini:
Lihat gambar 4:
Kita hanya akan membuat sebuah Button dan memberikan method onClick pada button tersebut.
Hem, anda sudah tahukan cara menambahkan method onClick pada button ini? Jangan bilang kalo anda lupa bagaimana cara menambahkannya yaa... :P
Bila betul – betul lupa, coba lihat tutorial PART 1.
Lanjut....
Method yang kita tambahkan adalah sebagai berikut,
Lihat gambar 5:
Itu adalah method yang kita gunakan sebagai event pada button. Sudah tahu kan dimana method tersebut harus diletakkan?? :)
Lihat, kita menggunakan kode:
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(”http://www.mediatutorial.web.id));
Kita akan mencari semuaaaaaa aplikasi yang teregister sebagai ACTION_VIEW dan mengirimkan data berupa Uri diatas. Mudah bukan??
Lanjutt...
Memodifikasi MetuWebBrowser
Sekarang, kita akan membuka project membuat Browser kita yang kemarin. Bila belum pernah buka/praktek, bisa dilihat di sini -> .
OK, buka project Web Browser kita, pertama yang harus dilakukan adalah me-register Aplikasi Web Browser kita ke Android System. Untuk meregister, kita bisa menambahkan <inten-filter/> tag ke dalam AndroidManifest.xml
Lihat kode dibawah,
Lihat gambar 6:
Anda bisa lihat, kita menambahkan <intent-filter> action, category, sekaligus data. Tiga (3) hal ini sudah kita bahas di atas.
Mudah bukan??? Kode di atas digunakan untuk meregister aplikasi MetuWebBrowser ke dalam Android system.
Yang kedua, adalah kita akan menambahkan beberapa baris kode, agar MetuWebBrowser kita ini bisa menangkap Intent yang dikirimkan oleh aplikasi pemanggil.
Nah, untuk menambahkannya, kita bisa sedikit otak – atik method onCreate() dalam class MainActivity.java, lihat kode berikut,
Lihat gambar 7:
Cobalah membaca kode diatas, mudah bukan membacanya??
Mari kita bahas,
Intinya adalah kita menangkap intent yang dikirim kemudian memasukkannya ke dalam variabel ‘data’. Variabel ‘data’ itu sendiri merupakan object Uri.
INGAT, DISINI kita menggunakan object Uri. Bukan String :)
Nah, kita juga akan membuat object url.
Anda bisa lihat, url yang kita tangkap kemudian dijadikan string dengan method toString();
Kemudian baru kita masukkan ke dalam method loadUrl().
Perhatikan kode url = new URL(data.getScheme(), data.getHost(),data.getPath());
Coba bila belum tahu, cari saja di google, apa maksud getScheme(), getHost(), getPath() :)
Ah, ada pertanyaan, method loadUrl() pada object webBrowserKu memiliki parameter yang HARUS bertipe String,lihat kode,
webBrowserKu.loadUrl(
Bisakah kita langsung menangkap Intent kemudian langsung memasukkan kedalam parameter untuk loadUrl() yang bertipe string seperti kode berikut?
Lihat gambar 8:
Ya, tentu bisa :) Semua tergantung kreatifitas kita kan,,,
OK, dua kode baris terakhir hanya menset supaya EditText sebagai address bertuliskan sama dengan url halaman website yang dibuka.
Mudah bukan???
Nah, sekarang cobalah running aplikasi pemanggil anda, dan lihat, pasti nanti akan muncul pilihan WebBrowser yang bisa anda pilih, salah satunya adalah MetuWebBrowser yang sudah kita modifikasi tadi.
Mudah – mudahan bermanfaat,
Salam
PART YANG LAIN:
Part 1: Mengirim Data ke Activity Tertentu dan Menampilkannya
Part 2: Memanggil Activity Aplikasi Tertentu dari Aplikasi kita (halaman ini)
Part 3: Mengirim Data ke Activity Pada Aplikasi Lain dan Menampilkannya (SILAHKAN ANDA KERJAKAN SENDIRI)
===================
DAFTAR CODE
Metu WebBrowser
activity_main.xmlMainActivity.java
Aplikasi Pemanggil
Activity_main.xmlMainActivity.java