Last Updated on 13 years by Mas Herdi
Hari ini, sama seperti hari – hari kemarin. Saya masih bergelut dengan bagaimana cara untuk membuat aplikasi yang bisa menembus proxy, bukan menembus, lebih tepatnya bisa berjalan pada koneksi yang dibatasi oleh proxy.
Sebelumnya kita telah membahas cara men-setting proxy pada android emulator. Dan sekarang kita akan membahas cara mengkoneksikan aplikasi Android buatan kita ke internet melalui proxy. Yang pertama, apabila aplikasi Anda membutuhkan koneksi internet, maka jangan lupa tambahkan ijin permission berikut pada AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Kode itu akan memberikan ijin pada aplikasi untuk mengakses Android, letakkan di luar tag <application></application>
. Biasanya diletakkan tepat di bawah tag tersebut.
WebView
Android mempunyai View khusus yang memperbolehkan Anda untuk memasukkan html page ke dalam aplikasi Android yang Anda buat yang bernama WebView. Nah. apa itu View? View itu adalah sistem GUI khusus yang dibuat Google untuk Android. Mirip seperti Swing pada Java Platform. Berkat WebView, Anda bisa membuat aplikasi Android hanya dengan bermodalkan html dan css. Berikut ini adalah contoh aplikasi yang menggunakan WebView.
WebView webView;
webView = (WebView)findViewById(R.id.web_view);webView.enablePlatformNotifications();
webView.setWebViewClient(new WebViewClient()); webView.loadUrl("file:///android_asset/marker.html");
Pada kode di atas, kita menggunakan WebView untuk me-load web page yang terdapat pada folder ~/assets/ yang terdapat pada project Android kita. Pertama-tama kita membuat sebuah objek WebView, dan mengeset objek itu ke layout WebView yang bernama web_view menggunakan method findViewById(). Disini web_view berupa file xml, dimana kebanyakan Android layout dibuat dengan menggunakan xml.
Kemudian, kita akan meminta web browser klien yang bertugas untuk me-render halaman html yang kita buat. Defaultnya adalah WebViewClient(), namun apabila ingin, kita bisa juga menggunakan WebChromeClient(). Dimana kita akan meminjam engine webkit milik Chrome, untuk me-render halaman html kita. Lumayan menarik bukan ? 🙂
Baris terakhir adalah baris dimana kita memanggil method loadUrl(), untuk mengambil halaman html yang akan ditampilkan, dengan memasukkan alamat html sebagai input parameter method loadUrl(). Alamat itu bisa berupa URL, ataupun file html.
Kembali ke Proxy
Nah, sekarang masalahnya bagaimana jika koneksi internet yang akan kita gunakan untuk meload URL dilindungi dengan proxy, atau bagaimana apabila file html kita berisi script javascript yang mem-fetch halaman html dari suatu website di luar sana? Mau tidak mau kita harus menerapkan setting-an proxy pada aplikasi kita agar bisa berjalan. Dan pada webView, kita bisa melakukannya dengan cukup mudah. Yaitu dengan memanggil method enablePlatformNotifications(). Method enablePlatformNotifications() berfungsi untuk menerapkan semua pengaturan internet yang telah Anda buat pada emulator Anda, untuk dipakai pada aplikasi. Jadi apabila emulator Anda telah di-settings proxy-nya, maka Anda hanya perlu untuk memakai pengaturan tersebut ke dalam WebView aplikasi yang Anda buat. Dan ketika di-running, aplikasi itu akan berjalan dengan memakai pengaturan proxy sesuai yang telah Anda terapkan pada emulator.
Namun, sayangnya method enablePlatformNotifications() hanya ada pada class WebView. Jadi banyak aplikasi lain yang setahu saya belum bisa berjalan pada internet yang dilindungi oleh proxy. Contohnya adalah MapView. MapView adalah class yang termasuk dalam Google SDK API, yang berfungsi untuk menampilkan Google Maps pada Android, dan tentunya banyak hal menyenangkan yang bisa dilakukan dengan class tersebut. 😀 Namun, sudah berhari-hari saya mencoba mencari cara bagaimana agar MapView bisa berjalan di belakang proxy, mengambil maps dengan lancarnya. Namun sejauh ini belum ada solusi yang saya temukan, bahkan banyak yang mengatakannya kalo itu adalah suatu bug/issue yang semoga bisa diperbaiki pada release berikutnya.
Dan, kebetulan saya juga sedang mencoba membuat aplikasi share to Facebook yang nantinya bisa dimanfaatkan sebagai fitur di aplikasi-aplikasi selanjutnya, menggunakan fitur Single Sign-On Facebook, dan saat ini masih terkendala dikarenakan adanya proxy. Heh heh heh