Anda di halaman 1dari 66

PEMROGRAMAN MOBILE I

DOSEN PENGAMPU
JUNADHI, M.KOM

SEKOLAH TINGGI MANAJEMEN


INFORMATIKA & KOMPUTER AMIK RIAU
STMIK Amik Riau
2018
PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id
1. INTRODUCTION

Apa itu Android


Android adalah sistem operasi yang dikeluarkan oleh Google khususnya untuk smartphone
dan tablet. Berbagai macam produsen telah menggunakan Android sebagai sistem operasi
untuk device yang mereka produksi. Android juga mempunyai store dimana terdapat 1 miliar
pengguna aktif.

Mengapa Android
Muncul pertanyaan kenapa menggunakan Android ? Android memanjakan penggunanya
dengan fiturnya yang sangat canggih seperti tampilan ui yang bagus baik dari segi user
interface dan user experience, dapat digunakan sebagai alat multimedia seperti pemutar
musik dan video, dan juga menggunakan perangkat keras seperti akselerometer, gyroscope
dan sensor lainnya ke dalam aplikasi. Disamping itu ada beberapa hal yang membuat Android
sebagai sistem operasi yang memang layak digunakan oleh pengguna atau dikembangkan
oleh para developer, seperti yang akan dijelaskan berikut ini.

Sistem Operasi SmartphoneTerpopuler


Sejak direlease pada tahun 2008, Android mengeluarkan beberapa versi dan hingga saat ini
yang terbaru adalah Nougat yang di release pada tahun 2016. Pada tahun 2013 Android
menjadi best-selling OS pada tablet dan menjadi os yang majoritas digunakan oleh pengguna
smartphone. Tercatat pada tahun 2016 store Android memiliki lebih dari 2.7 juta aplikasi dan
lebih dari 2 miliar penggunaaktif tiap bulannya.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Android menarik untuk para perusahaan teknologi yang membutuhkan barang siap jadi, biaya
rendah dan kustomisasi os untuk perangkat teknologi tinggi mereka. Dengan beberapa
kelebihan tersebut membuat perusahaan-perusahaan besar mengeluarkan produknya
dengan menggunakan sistemoperasi Android.
Source code dari Android dikeluarkan oleh Google dengan memiliki lisensi open source,
sehingga menarik para komunitas developer dan entusias untuk menggunakannya dalam
project komunitas.

Store
Aplikasi Android bisa di distribusikan dengan menggunakan web, copy apk, email dan store.
Store Android yaitu Google Play merupakan cara termudah bagi para developer untuk
medistribusikan aplikasinya ke pasar yang memiliki jutaan pengguna.

Google play merupakan store resmi Android yang dikelola oleh Google, pengguna bisa
mencari dan download aplikasi yang di kembangkan dengan menggunakan Android Software
Development Kit. Disamping aplikasi beberapa servis yang ditawarkan di dalam Google Play
adalah media digital, music, buku, majalah, film dan program televisi.
Bagaimana para developer memonetisasi aplikasi yang ada di dalam Google Play? Strategi
monetisasi aplikasi yang di tawarkan Google Play bermacam-macam dimulai dari paid
distribution (app berbayar), in-app produk, subscriptions, dan ads. Tentunya developer harus
mengikuti aturan yang ada untuk memastikan bahwa pengguna mendapatkan user
experience yang paling bagus.

Development Kit untuk developer


Android Software Development Kit (SDK) merupakan kit yang bisa digunakan oleh para
developer untuk mengembangkan aplikasi berbasis Android. SDK di dalamnya terdapat
beberapa tools untuk mengembangkan aplikasi seperti debugger, software libraries,
emulator, dokumentasi, sample code dan tutorial.
Bahasa pemrograman yang sering digunakan untuk mengembangkan aplikasi Android
adalah Java, namun ada beberapa Bahasa lainnya yang juga support untuk

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


mengembangkan aplikasi Android seperti C++, dan Go. Dan pada Google IO 2017 menjadikan
Kotlin sebagai Bahasa yang disupport resmi oleh Google.

Sejarah Android
Dibawah ini berupa list sejarah dari Android yang resmi di release oleh Google.

Sources : https://en.wikipedia.org/wiki/Android_(operating_system)

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


2. HOW TO INSTALL
Java
Salah satu Bahasa yang bisa digunakan untuk development Android adalah Java. Selain Java
ada beberapa Bahasa lain yang bisa digunakan seperti C/C++, Go, dan pada May 2017 Google
resmi support Kotlin.
Pada akademi ini kita hanya akan fokus menggunakan Java sebagai Bahasa pemrograman
yang digunakan. Oleh karena itu maka kita install dulu software yang harus kita gunakan
untuk coding (menuliskan baris code), siapkan senjata Anda sebelum berperang.
Yang harus diinstall adalah Java Development Kit yang bisa kita dapatkan pada link berikut:

 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html/

Biasanya muncul pertanyaan? Apakah JRE cukup? Tidak, JRE adalah Java Runtime
Environment yang berfungsi sebagai Virtual Machine untuk menjalankan program Java.
Sedangkan JDK merupakan Java SE Development Kit, dimana JRE juga di ada di dalamnya.
Dan yang lebih penting adalah di dalamnya terdapat compiler dan tools untuk membuat dan
compile program.
Sederhananya JRE untuk menjalankan program, JDK untuk membuat program.
Mari kita mulai dengan proses instalasi dari JDK.

1. Langsung saja buka link di atas menggunakan browser Anda, dan pilih Java Platform
(JDK), tampilan dari layout download dari JDK.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


2. Lalu pilihlah yang sesuai dengan device dan os yang Anda pakai.

3. Setelah proses download selesai, langsung install ke device Anda dan ikuti petunjuknya
sampai selesai.

Android Studio
Pada akademi kali ini kita akan menggunakan Android Studio sebagai IDE (Integrated
Development Environment). Android Studio di release 16 May 2013 pada Google IO. Android
Studio berbasiskan JetBrains Intellij IDEA, dan dikhususkan untuk mengembangkan software
berplatform Android.
Untuk Android Studio bisa download dari website resmi google :

 https://developer.android.com/studio/index.html/

Mari langsung saja kita mulai instalasi dari Android Studio.

1. Tampilan dari laman download Android Studio.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


2. Ikuti petunjukknya sampai selesai.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. FIRST PROJECT
Tampilan jendela pertama kali ketika Android Studio. Untuk memulai project baru pilihlah
“Start a new Android Project”.

1. Dalam dialog ini kita bisa memberi nama dari aplikasi kita, dan company domain.
Company domain akan di gunakan dalam identifikasi unik dari aplikasi kita ketika
sudah di-publish. Kita juga dapat mengganti dari direktori dimana project kita akan
disimpan.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


2. Dialog selanjutnya adalah target devices, di dalam dialog ini kita bisa memilih target
devices dari aplikasi yang akan kita buat. Kita juga bisa mengganti nilai minimum SDK
yang akan di kover oleh aplikasi kita.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Dialog selanjutnya adalah default template. Terdapat beberapa template yang bisa
kita gunakan seperti Empty Activity, Login Activity, Navigation Drawer Activity, dan lain-
lain.

4. Dialog selanjutnya adalah nama dari activity yang pertama kali kita buat.

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Android Manifest
Manifest adalah salah satu file yang harus ada di dalam sebuah project Android. Manifest
berfungsi sebagai file yang memberikan informasi penting dari sebuah aplikasi ke sistem
Android. Sistem perlu mengetahui apa yang akan digunakan oleh aplikasi sebelum bisa
mulai dijalankan.
Beberapa fungsi yang ada di dalam manifest adalah sebagai berikut.

 Nama Package

1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2. package="com.mobile.myapplication">

Package name merupakan sebagai identitas unik dari sebuahaplikasi. Identitas ini
juga yang akan digunakan di dalam store untuk membedakan suatu aplikasi dengan
aplikasi lainnya. Jangan pernah mengganti value di dalam package karena nantinya
akan dikenali sebagai aplikasi yang lainjika sudah masuk ke dalam store.

10

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


 Komponen Aplikasi
Berfungsi untuk mendiskripsikan komponen dari aplikasi mulai dari activity, services,
broadcast receiver, dan content provider.

1. <application
2. android:allowBackup="true"
3. android:icon="@mipmap/ic_launcher"
4. android:label="@string/app_name"
5. android:roundIcon="@mipmap/ic_launcher_round"
6. android:supportsRtl="true"
7. android:theme="@style/AppTheme">
8. <activity android:name=".MainActivity">
9. <intent-filter>
10. <action android:name="android.intent.action.MAIN" />
11.
12. <category android:name="android.intent.category.LAUNCHER" />
13. </intent-filter>
14. </activity>
15.
16. <service
17. android:name=".MyIntentService"
18. android:exported="false" />
19.
20. <receiver
21. android:name=".MyReceiver"
22. android:enabled="true"
23. android:exported="true"></receiver>
24. </application>

Komponen aplikasi semuanya berada di antara tag <application>. Disini juga


berfungsi sebagai penamaan kelas yangmeng-implement komponen dan
mendeskripsikan kemampuannya seperti intent-filter, dimana fungsinya
mendeskripsikan bahwa komponen itu adalah yang pertama kali dijalankan.

 Permission
Mendeklarasikan permission apa saja yang harus dimiliki oleh aplikasi untuk akses ke
dalam komponen API seperti internet, external storage, contact, dan juga untuk
berinteraksi kepada aplikasi lainnya.

Gradle
Gradle merupakan open source build automation system. Automation system berguna untuk
mengotomatisasi proses pembuatan dari software build dan proses-proses terkait lainnya
termasuk compile source code menjadi binary code, packaging binary code, dan
menjalankan automated test.

11

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


build.gradle (Project: MyApplication)
Merupakan software build tingkat teratas yang meliputi keseluruhan dari project dari sebuah
aplikasi. Di dalamnya berisi konfigurasi semua modul yang ada di dalam project.
build.gradle (Module: app)
Merupakan software build yang ada pada setiap modul di dalam project sebuah aplikasi.
Beberapa konfigurasi yang di edit di antaranya adalah android settings, defaultConfig dan
productFlavors, buildTypes, dan dependencies.

12

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


1. apply plugin: 'com.android.application'
2.
3. android {
4. compileSdkVersion 25
5. buildToolsVersion "25.0.2"
6. defaultConfig {
7. applicationId "com.mobile.myapplication"
8. minSdkVersion 21
9. targetSdkVersion 25
10. versionCode 1
11. versionName "1.0"
12. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRun
ner"
13. }
14. buildTypes {
15. release {
16. minifyEnabled false
17. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'pro
guard-rules.pro'
18. }
19. }
20. }
21.
22. dependencies {
23. compile fileTree(dir: 'libs', include: ['*.jar'])
24. androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2'
, {
25. exclude group: 'com.android.support', module: 'support-annotations'
26. })
27. compile 'com.android.support:appcompat-v7:25.3.1'
28. compile 'com.android.support.constraint:constraint-layout:1.0.2'
29. testCompile 'junit:junit:4.12'
30. }

 Android Settings
Di dalam block android kita bisa menetapkan compileSDKVersion dan
buildToolsVersion.
 Default Config
Di dalamnya terdapat properties seperti applicationID, minSdkVersion,
targetSdkVersion dan test information.
 Build Types
Di dalamnya terdapat properties dari debuggable, ProGuard enabling, debug signing,
version name suffix dan test information.
 Dependencies
Di dalamnya terdapat `informasi tentang library yang digunakan oleh aplikasi.

13

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Sync Project
Setiap kali terjadi perubahan informasi di dalam build.gradle maka kita harus melakukan
sinkronisasi terlebih dahulu. Tombol sync now akan muncul pada sebelah kanan atas ketika
terjadi perubahan.

Setelah proses sinkronisasi selesai maka akan muncul informasi pada log apakah proses
sinkronisasi berhasil atau tidak.

14

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


4. RUN EMULATOR
Testing aplikasi sudah merupakan kewajiban yang harus dilakukan oleh seorang developer.
Proses running atau debugging bisa dilakukan dengan dua cara yaitu dengan emulator atau
device asli. Baik emulator atau device asli memiliki kelebihan dan kekurangan masing-masing,
kita sebagai developer tinggal memilih mana yang sesuai dengan keperluan kita.
Running menggunakan emulator
Ikuti langkah-langkah berikut untuk run aplikasi kita dengan menggunakan emulator built-in
dari Android Studio.

1. Jalankan icon run, kemudian akan muncul dialog seperti ini. Mari kita coba buat
emulator baru dengan memilih Create New Virtual Device.

2. Akan muncul dialog dengan pilihan beberapa emulator device yang bisa langsung anda
gunakan.

15

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Jika anda ingin membuat spesifikasi hardware sendiri bisa dengan memilih pilihan
New Hardware Profile. Maka akan muncul dialog seperti dibawah ini.

16

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Konfigurasi hardware terserah dengan preferensi dari pengguna, yang perlu diingat adalah
gunakanlah konfigurasi emulator yang sesuai dengan kemampuan dari laptop atau computer yang
Anda gunakan. Run emulator perlu di perhatikan karena emulator akan memakan resource yang
cukup lumayan banyak.

4. Anda dapat membuat hardware emulator baru atau bisa juga memilih dari hardware
emulator yang sudah ada. Setelah memilih hardware emulator langsung ke langkah
selanjutnya yaitu akan muncul dialog seperti ini.

17

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Pada dialog ini anda akan memilih versi android dari emulator yang akan anda buat. Pada
dialog diatas dipilih versi yang sudah terdownload yaitu Nougat. Tombol download di
sebelah kanan versi menunjukkan bahwa anda perlu men-download-nya terlebih dahulu
jika ingin menggunakannya.

5. Selanjutnya klik Next, dan akan muncul dialog verify configuration. Pada dialog ini
anda bisa sekali lagi memverifikasi configurasi dari emulator yang anda pilih.

18

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Di bawah kiri ada tombol Show Advanced Settings, coba anda klik dan akan muncul
tampilan dialog baru seperti ini.

19

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Dari tampilan advanced setting anda bisa kustomisasi hardware yang telah kita pilih
sebelumnya.
6. Jika sudah selesai klik finish dan langsung launch emulatornya dengan menekan
tombol hijau yang ada di sebelah kanan.

7. Okay, selesai setting emulatornya dan bisa langsung dijalankan.


Catatan :
Jika muncul warning bahwa haxm not installed bisa langsung download dengan
mengikuti link download yang disediakan.
Jika muncul warning bahwa VT-x disabled in BIOS maka anda perlu restart komputer
anda, kemudian masuk ke layar BIOS, dan ubah virtualization-nya menjadi enabled.

Run dengan device


Untuk run atau debugging yang paling disarankan kepada para developer adalah dengan
menggunakan device smartphone asli. Run dengan menggunakan device memiki beberapa
kelebihan jika dibandingkan dengan emulator yaitu :

1. Lebih cepat
2. Fitur seperti geo-location, push notif bisa digunakan
3. Bisa mengetahui daya serap baterai terhadap aplikasi
4. Lebih mudah

Dengan menggunakan device smartphone asli maka kita dapat mengetahui keadaan
(environment) aplikasi ketika dijalankan di device asli. Dengan memastikan bahwa aplikasi
kita berjalan secara wajar di device asli maka sudah cukup memberikan jaminan kepada
aplikasi kita ketika nantinya di pasarkan (store). Akan tetapi kadang kala dengan hanya run di

20

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


satu device belum cukup untuk merepresentasikan berjalannya aplikasi kita di store,
dikarenakan banyaknya model device Android yang ada di pasaran saat ini. Tapi kita tidak
akan membahas masalah ini di dalam akademi kita.
Mari ikuti langkah-langkah berikut untuk run atau debug di dalam device. Tampilan dari
langkah berikut bisa dipastikan akan berbeda dengan device yang Anda pakai, akan tetapi
secara garis besar langkahnya akan sama meskipun berbeda device

1. Pastikan device yang akan dipakai sesuai dengan target SDK atau paling tidak min SDK
version dari aplikasi kita.
2. Buka setting dan masuk ke dalam menu About. Di dalam about cari informasi tentang
build number.

21

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


22

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Kemudian tekan build number sebanyak 7 kali.

23

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


4. Kembali ke menu setting di awal dan akan muncul menu baru di bawah about yaitu
Developer Options. Selamat anda sudah resmi menjadi seorang Developer Android.

24

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


5. Masuk ke dalam menu Developer options dan pastikan opsi USB Debugging Mode
sudah nyala.

25

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


6. Oke selesai setting pada device langsung saja koneksikan dengan laptop atau
computer yang anda pakai.

26

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


5. BUILD APK
Hal terakhir setelah mengembangkan aplikasi di Android adalah membuat file executable
dalam bentuk format APK (Android Application Package) yang dapat didistribusikan agar
aplikasi kita dapat sampai ke tangan pengguna. Jika kamu belum mengerti tentang apk, ini
seperti file exe di windows atau ipa di iOS yang akan didapatkan oleh pengguna untuk
melakukan instalasi (pemasangan) aplikasi di device android. File inilah yang akan nantinya
kamu upload ke Google Play agar pengguna bisa mendownload aplikasi kamu. Kelebihan dari
file apk ini adalah kemampuannya untuk didistribusikan melalui non market aplikasi, bisa
melalui website, email, bahkan flashdisk. Namun, jika aplikasi mu ingin lebih menjangkau
lebih jauh pengguna disarankan tetap melakukan publish aplikasi kamu ke Google Play Store.
Cara membuat file apk di android pun cukup mudah via wizard atau via command line. Pada
sesi kali ini kita akan memfokuskan pada penggunaan wizard untuk melakukan proses
generate apk yang akan kita bagi menjadi dua :

1. Dengan menggunakan default keystore


2. Dengan menggunakan custom keystore

Sebelum memulai kami yakin kamu masih mempertanyakan tentang ‘mahluk’ bernama
keystore itu seperti apa, baik, keystore adalah sebuah file binary yang berisi informasi tentang
satu atau lebih private key. Ini lebih mengarah pada konsep pengamanan apk yang kita buat
yang di generate dengan sertifikat berbasis public dan private key. Konsep umumnya sebagai
berikut : Sistem operasi android membutuhkan semua apk di signed / digenerate dengan
menggunakan sebuah sertifikat sebelum aplikasi atau apk-apk tersebut dipasang ke dalam
device. Proses penggunaan public dan private key berlangsung selama developer melakukan
generasi (signed) apk untuk versi debug maupun untuk versi production (release). Sebuah
sertifikat digital public key atau juga disebut identify certificate berisi informasi tentang
dirinya sendiri dan private key yang bisa digunakan dan juga termasuk metadata dari pemilik
certificate tersebut dalam hal ini developer yang melakukan proses pembuatan aplikasi.
Public key ini secara otomatis akan dilampirkan dalam file apk ketika proses signed/generate
apk dilakukan oleh gradle melalui signing tools yang disediakan oleh android studio. Public
key bersifat identifier unik yang hanya berasosiasi dengan file project android yang digunakan
dan file keystore terkait. Selain untuk menjaga keamanan dari apk yang dibuat ini juga akan
termasuk pada konsistensi dan menjaga originalitas ketika apk diupdate di Google Play Store.
Ingat apk hanya bisa diupdate jika keystore pertama kali upload sama dengan keystore ke n
kali upload. Kegunaan keystore sangat banyak dua diantaranya yang paling terpenting ialah :

 Untuk integrasi ke layanan Google seperti Google Maps dengan menggunakan nilai
hash (diggest SHA1) didalamnya.
 Untuk integrasi ke layanan api facebook dengan menggunakan keyhash base64 yang
terkandung didalam keystore.

27

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Keystore merupakan sebuah file penting yang kamu harus benar-benar bisa menjaga, terlebih
jika aplikasi buatan kamu adalah calon-calon aplikasi dengan jumlah download yang besar
dan memberikan manfaat banyak. Karna kalau kamu lalai akibatnya adalah file apk kamu
tidak dapat terupdate dan hal terburuknya kamu harus melakukan dari awal lagi. Berikut
adalah tips yang bisa kamu pahami untuk mengamankan keystore :

1. Plih password yang sulit ditebak, kombinasikan angka, alphabet dan simbol dalam
membuatnya.
2. Bedakan antara keystore password dan keypassword ketika membuat file apk dengan
kustom keystore.
3. Jangan memberikan keystore kepada orang yang tidak dipercaya apalagi kamu
meletakannya didalam file project aplikasi.

Letakan ditempat yang kamu ingat dan pastikan aman.


Seperti biasa untuk membuat kamu lebih paham tentang ini kami menyarakan kamu untuk
membaca materi lanjutan di tautan berikut :
 App Signing (https://developer.android.com/studio/publish/app-
signing.html)

Jika kamu ingin menemukan dimana default keystore kamu yang berupa debug.keystore
kamu bisa mendapatkannya di ~/.android/debug.keystore Pada mac dan
C:\User\YourUser\.android\debug.keystore pada windows.
Tenang pada latihan kali ini kita sama sekali tidak melakukan pengkodean. Mari kita mulai
dengan yang pertama :

1. Buka salah satu project android associate favoritmu, misal My Broadcast Receiver.
2. Sekarang klik menu Build

28

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Lalu perhatikan secara otomatis pada status bar gradle akan menjalankan sebuah
proses untuk melakukan proses generate apk. Proses ini bergantung pada seberapa
kompleks aplikasi kamu dan seberapa banyak dependensi dengan library yang kamu
gunakan.
4. Ketika berhasil maka di sudut kanan atas android studio kamu akan muncul notifikasi
sebagai berikut :

Sekarang tinggal kamu klik link yangterdapat pada notifikasi tersebut dan secara
otomatis akan diarahkan dimana file apk tersebut berada biasanya pada struktur
seperti berikut project-name/module-name/build/outputs/apk/dan jika disesuaikan
dengan project yang sedang digunakan maka akan menjadi
sepertiberikut MyBroadcastReceiver/app/build/outputs/apk/apk-debug.apk

29

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


6. MODUL INTRODUCTION

Dalam modul ini kita akan belajar tentang komponen-komponen dasar yang digunakan
untuk membuat aplikasi android yang sederhana.
Beberapa komponen diantaranya adalah :

1. Activity
2. Intent
3. Views and ViewGroup
4. Style and Theme
5. RecyclerView

Teori

1. Activity merupakan sebuah komponen di Android yang berfungsi untuk menampilkan


User interface ke layar handset Android Pengguna. Ini seperti pada saat anda melihat
list chat pada aplikasi WhatsApp atau list email pada aplikasi Gmail di ponsel android
anda.
2. Umumnya dalam sebuah aplikasi terdapat lebih dari satu Activity yang saling
terhubung dengan tugas yang berbeda-beda.
3. Activity merupakan salah satu komponen penting Android yang memiliki daur hidup
(Lifecycle) dalam sebuah stack pada virtual sandbox yang disiapkan oleh Dalvik
Virtual Machine (DVM) atau Android Runtime (ART) yang bersifat Last In First Out.
4. Pada implementasinya, Activity selalu memiliki satu layout user interface dalam
bentuk file xml.
5. Sebuah aplikasi android bisa memiliki lebih dari satu Activity dan harus terdaftar di file
AndroidManifest.xml sebagai sub Aplikasi (pada tag )
6. Sebuah class Java dinyatakan sebuah Activity jika mewarisi (extends) superclass
Activity atau turunannya seperti AppCompatActivity atau FragmentActivity.

Untuk lebih mendalami tentang Activity, kami menyarankan anda untuk membaca
referensi berikut :

 Activities (https://developer.android.com/guide/components/activities/)

30

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Activity Lifecycle

Developer yang baik, harus mengetahui secara detail tentang lifecycle sebuah Activity untuk
melakukan aksi yang tepat, terutama ketika terjadi perubahan state dari Activity. Callback
methods yang ada dapat digunakan untuk melakukan beragam proses terkait state
dari Activity. Misal melakukan semua inisialisasi komponen di onCreate(), melakukan
disconnect terhadap koneksi ke server pada onStop() atau onDestroy() dan lain sebagainya.
Pemahaman yang baik tentang daur hidup Activity akan membuat implementasi fungsi dari
rancangan aplikasi anda menjadi lebih baik. Hal ini juga meminimalisir terjadinya
error/bug/force close yang tidak diinginkan.

31

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Last In, First Out (LIFO)

Gambar 1: Jika anda memiliki sebuah aplikasi yang terdiri dari 2 Activity. Activity pertama
dijalankan setelah pengguna meluncurkan aplikasi anda melalui icon aplikasi di layar
device. Activity yang ada saat ini berada pada posisi Activity running setelah melalui
beberapa state onCreate() onStart() onResume() dan masuk ke dalam sebuah
stack Activity.
Bilamana dari Activity pertama anda menjalankan Activity kedua melalui klik sebuah
tombol (button); posisi state dari Activitypertama anda, berada pada posisi stop dan method
callback onStop() akan dipanggil. Ini terjadi karena Activity sebelumnya sudah tidak berada

32

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


pada layar foreground / tidak lagi ditampilkan namun semua informasi terakhir
pada Activity pertama akan disimpan secara otomatis. Activity kedua masuk ke dalam stack
dan menjadi Activity terakhir yang masuk.
Gambar 2: Activity kedua sudah muncul di layar sekarang. Lalu dari Activity kedua ini anda
menekan tombol back pada physical button menu utama atau memanggil
method finish() maka Activity kedua anda akan di pop up keluar dari stack dan
state Activityini akan berada pada destroy, tentunya method onDestroy() akan dipanggil.
Inilah mengapa disebut Last In, First Out.Activitykedua menjadi yang terakhir masuk stack
dan yang paling pertama keluar dari stack.
Gambar 3: Activity Pertama akan dimunculkan kembali di layar setelah melalui beberapa
state dengan rangkaian callback method yang
terpanggil, onStop() onRestart() onStart() onResume().
Detailnya dapat anda baca disini :

 LifeCycle (https://developer.android.com/guide/components/activities/#Lifecycle)

Saving Activity State


Ketika sebuah activity mengalami onPause kemudian onResume maka state dari sebuah
activity tersebut dapat terjaga. Ini karena obyek Activity masih tersimpan di memory
sehingga dapat dikembalikan statenya. Dengan menjaga state dari Activity tersebut maka
perubahan pada Activity yang dilakukan oleh user ketika activity kembali ke foreground
atau onResume akan tetap seperti saat user berpindah activity bahkan berpindah aplikasi.
Akan tetapi ketika sistem menghancurkan Activity untuk keperluan memori (misalnya karena
memori habis), maka obyek activity dihancurkan. Dengan dihancurkannya sebuah
obyek Activity maka ketika Activity ingin ditampilkan kembali diperlukan proses re-create
activity yang dihancurkan. Karena ada kemungkinan terjadinya proses tersebut maka
perubahan yang dilakukan pada activity perlu disimpan terlebih dahulu. Disinilah
method onSaveInstanceState() digunakan.
Dalam onSaveInstanceState terdapat bundle yang dapat digunakan untuk menyimpan
informasi dengan memanfaatkan fungsi seperti putString() dan putInt(). Bundle dikirimkan
pada onCreate dan onRestoreInstanceState ketika Activity di-restart.
Dengan menggunakan bundle yang dikirimkan maka activity dapat mengisi kembali
perubahan yang terjadi saat onCreate atau dengan meng-override onRestoreInstanceState.

33

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Proses penghancuran aplikasi bukan hanya pada saat ketika sistem menghancurkan activity
karena membutuhkan memori untuk proses lain; akan tetapi terjadi juga ketika terjadi
perubahan konfigurasi seperti orientation changes, keyboard avalaibility, dan language.
Beberapa proses tersebut ketika terjadi akan menjalankan onDestroy kemudian langsung
memanggil onCreate. Behavior tersebut dimaksudkan agar activity dapat menyesuaikan
dengan konfigurasi yang baru seperti menyesuaikan ukuran layar.
Hal yang perlu diingat ketika menggunakan onSaveInstanceState adalah Bundle tidak
diperuntukkan menyimpan data yang besar seperti bitmaps dan Bundle harus melalui proses
serialize serta deserialize yang akan memakan memori.

34

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


7. ACTIVITY LATIHAN
Tujuan

Codelab ini bertujuan untuk mengimplementasikan komponen Activity pada aplikasi


pertama yang anda bangun sehingga dapat memberikan gambaran tentang
bagaimana Activity ditampilkan. Kemudian anda memberikan Interaksi di dalamnya seperti
memberi input dan mengklik sebuah tombol.

Logika Dasar

Melakukan input ke dalam obyek TextBox


perhitungan volume balok ketika tombol hitung diklik

Codelab Perhitungan Volume

1. Buat Project Baru dengan klik File -> New -> New Project... pada Android Studio
anda

35

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


2. Setelah muncul Jendela Create New Project, kemudian atur nama
aplikasi dan domain perusahaan/website anda. Sebaiknya jangan sama dengan apa
yang ada dicontoh. Dan jangan lupa pula untuk menentukan lokasi project.

3. Kemudian pilih tipe device untuk aplikasi beserta target minimum SDK yang akan kita
gunakan. Pilihan target Android SDK yang kita pilih akan mempengaruhi banyaknya
device yang bisa menggunakan aplikasi buatan kita. Disini kita pilih untuk tipe device
Phone and Tablet dengan minimum SDK diset ke Level 15 (Ice Cream
Sandwich)/ Klik Next untuk melanjutkan.

36

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


4. Pada bagian ini kita akan memilih tipe Activity awal dari template yang telah
disediakan. Saat ini Android Studio sudah menyediakan berbagai macam template
Activity dari yang paling sederhana hingga yang paling kompleks seperti :

ACTIVITY KETERANGAN
Add No Activity Tidak ada Activity yang ditambahkan
Basic Activity Activity dengan template komponen material design
seperti FloatingActionButton
Empty Activity Activity dalam bentuk yang paling dasar
Fullscreen Activity Activity fullscreen tanpa status bar
Google AdMob Ads Activity Activity dengan default konfigurasi iklan Admob
Google Maps Activity Activity dengan menyediakan konfigurasi dasar
Google Maps
Login Activity Activity untuk halaman login
Master / Detail Activity yang diperuntukan untuk alur aplikasi
Flow Master Detail pada device tablet

37

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Navigation Drawer Activity dengan tampilan side bar menu
Activity
Scrolling Activity Activity dengan kemampuan Scroll konten
didalamnya secara vertical
Settings Activity yang diperuntukan untuk Konfigurasi
Activity Aplikasi
Tabbed Activity Activity yang diperuntukan untuk menampilkan
lebih dari satu tampilan, dapat digeser ke kanan
dan ke kiri (Swipe) dan dengan menggunakan
komponen ViewPager

Saat ini kita pilih tipe Empty Activity, klik Next untuk melanjutkan.
5. Selanjutnya, tentukan nama Activity pertama kita, saat ini kita biarkan pada kondisi
apa adanya. Ingat, jika suatu saat nanti kita ingin melakukan penambahan Activity,
best practice nya adalah dengan menambahkan Activity setelah kata nama kelas yang
akan kita buat. Misal: ProfileActivity, SettingsActivity dan lain sebagainya.
Klik Finish untuk menyelesaikan.

38

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


6. Selamat!, Anda telah berhasil membuat sebuah project baru Android. Layar anda
pasti akan seperti dibawah ini:

39

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


7. Di sebelah kanan anda adalah workspace dimana Activity anda berada dan
bernama MainActivity.java dengan layoutnya activity_main.xml. Di sebelah kiri
anda terdapat struktur project anda dimana nanti kita akan banyak menambahkan
berbagai komponen, asset dan library. Untuk lebih mengenal Android Studio lebih
dalam silakan baca materi ini https://developer.android.com/studio/intro/index.html/

Selanjutnya kita akan mulai melakukan pengkodean aplikasi atau lebih enaknya
disebut ngoding. Berikut flow umumnya.
Ngoding Layout untuk User Interface aplikasi
Ngoding Activity untuk menambahkan logika aplikasi

Jangan ngetik saja atau ngoding polos, Gunakan ctrl + space untuk menggunakan code
completion dari Android Studio agar mengoptimasi import package dari komponen yang
digunakan.
Dilarang Keras untuk copy - paste! Ngoding pelan-pelan akan membuat anda lebih jago di
masa depan.

Selamat ngoding!

Menambahkan Code Sederhana pada Layout Activity

1. Silahkan klik tab file activity_main.xml pada workspace anda


(res/Layout/activity_main.xml), dan silakan ikuti baris-baris berikut:

1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2. xmlns:tools="http://schemas.android.com/tools"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent"
5. android:paddingBottom="@dimen/activity_vertical_margin"
6. android:paddingLeft="@dimen/activity_horizontal_margin"
7. android:paddingRight="@dimen/activity_horizontal_margin"
8. android:paddingTop="@dimen/activity_vertical_margin"
9. android:orientation="vertical"
10. tools:context="com.mobile.associate.barvolume.MainActivity">
11. <TextView
12. android:layout_width="match_parent"
13. android:layout_height="wrap_content"
14. android:text="Panjang"
15. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
16. <EditText
17. android:id="@+id/edt_length"
18. android:layout_width="match_parent"
19. android:layout_height="wrap_content"
20. android:inputType="numberDecimal"

40

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


21. android:lines="1"
22. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
23. <TextView
24. android:layout_width="match_parent"
25. android:layout_height="wrap_content"
26. android:text="Lebar"
27. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
28. <EditText
29. android:id="@+id/edt_width"
30. android:layout_width="match_parent"
31. android:layout_height="wrap_content"
32. android:inputType="numberDecimal"
33. android:lines="1"
34. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
35. <TextView
36. android:layout_width="match_parent"
37. android:layout_height="wrap_content"
38. android:text="Tinggi"
39. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
40. <EditText
41. android:id="@+id/edt_height"
42. android:layout_width="match_parent"
43. android:layout_height="wrap_content"
44. android:inputType="numberDecimal"
45. android:lines="1"
46. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
47. <Button
48. android:id="@+id/btn_calculate"
49. android:layout_width="match_parent"
50. android:layout_height="wrap_content"
51. android:text="Hitung"
52. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
53. <TextView
54. android:id="@+id/tv_result"
55. android:layout_width="match_parent"
56. android:layout_height="wrap_content"
57. android:text="Hasil"
58. android:gravity="center"
59. android:textSize="24sp"
60. android:textStyle="bold"
61. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
62. </LinearLayout>

2. Akan muncul warning pada attribut android:text pada layout tersebut. Ini disebabkan
karena kita hardcode code string kita. Mari kita hilangkan code warning tersebut
dengan menekan alt+enter pada attribut android:text. Akan muncul dialog seperti ini,
pilihlah extract string resource.

41

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Kemudian akan muncul dialog seperti dibawah ini, sesuaikan dengan nama yang ada.

42

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


4. Fungsi extract string resource akan secara otomatis menambahkan values dalam
android:text ke dalam file res
lainnya hingga tidak ada warning lagi. Jika kita buka files strings.xml akan seperti ini.
1. <resources>
2. <string name="app_name">BarVolume</string>
3. <string name="lebar">Lebar</string>
4. <string name="tinggi">Tinggi</string>
5. <string name="hitung">Hitung</string>
6. <string name="hasil">Hasil</string>
7. <string name="panjang">panjang</string>
8. </resources>

5. Jika terjadi error pada attribut dimens, maka kita perlu menambahkan file dimens.xml
di dalam res
2.3 file dimens.xml sudah tidak di generate secara otomatis ketika sebuah project
dibuat. Langsung saja tambahkan dengan cara klik kanan pada directory res. Akan
muncul dialog seperti ini.

6. Kemudian isikan sesuai di bawah ini.

43

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


7. Jika file dimens.xml sudah terbuat, sesuaikan isi dari dimens.xml menjadi seperti
berikut.
1. <resources>
2. <!-- Default screen margins, per the Android Design guidelines. -->
3. <dimen name="activity_horizontal_margin">16dp</dimen>
4. <dimen name="activity_vertical_margin">16dp</dimen>
5. </resources>

Menambahkan Kode Logika Sederhana pada MainActivity

1. Selanjutnya setelah selesai, lanjutkan dengan membuka file MainActivity.java dan


lanjutkan ngoding baris-baris dibawah ini.

1. public class MainActivity extends AppCompatActivity implements View.OnCl


ickListener{
2. private EditText edtWidth, edtHeight, edtLength;
3. private Button btnCalculate;
4. private TextView tvResult;
5.
6. @Override
7. protected void onCreate(Bundle savedInstanceState) {
8. super.onCreate(savedInstanceState);
9. setContentView(R.layout.activity_main);
10. edtWidth = (EditText)findViewById(R.id.edt_width);
11. edtHeight = (EditText)findViewById(R.id.edt_height);
12. edtLength = (EditText)findViewById(R.id.edt_length);
13. btnCalculate = (Button)findViewById(R.id.btn_calculate);
14. tvResult = (TextView)findViewById(R.id.tv_result);
15. btnCalculate.setOnClickListener(this);
16. }

44

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


17.
18. @Override
19. public void onClick(View v) {
20. if (v.getId() == R.id.btn_calculate){
21. String length = edtLength.getText().toString().trim();
22. String width = edtWidth.getText().toString().trim();
23. String height = edtHeight.getText().toString().trim();
24. boolean isEmptyFields = false;
25. if (TextUtils.isEmpty(length)){
26. isEmptyFields = true;
27. edtLength.setError("Field ini tidak boleh kosong");
28. }
29. if (TextUtils.isEmpty(width)){
30. isEmptyFields = true;
31. edtWidth.setError("Field ini tidak boleh kosong");
32. }
33. if (TextUtils.isEmpty(height)){
34. isEmptyFields = true;
35. edtHeight.setError("Field ini tidak boleh kosong");
36. }
37. if (!isEmptyFields) {
38. double l = Double.parseDouble(length);
39. double w = Double.parseDouble(width);
40. double h = Double.parseDouble(height);
41. double volume = l * w * h;
42. tvResult.setText(String.valueOf(volume));
43. }
44. }
45. }
46. }

Jika terdapat baris merah seperti ini :

Jangan khawatir, silakan klik keatas baris merah tersebut dan silakan klik pada
icon atau dengan tekan tombol (Alt + Enter)lalu pilih implements method

2. Setelah sudah selesai silakan jalankan aplikasi dengan mengklik atau Run
‘app’ dari menu bar. Kemudian ada pilihan seperti ini.

45

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Itu tandanya adb (Android Debugger) device yang anda punya telah terkoneksi dengan
Android Studio. Jika anda tidak memiliki device silakan gunakan emulator. Ikuti materinya
disini https://developer.android.com/studio/run/managing-avds.html/

Kami merekomendasikan anda menggunakan device Android sewaktu develop aplikasi di


Android. Selain karena akan menghemat penggunaan memori dari device yang anda gunakan,
juga akan memberikan pengalaman yang berbeda dengan menjalankan aplikasi di device
anda sendiri. Pilih OK untuk menjalankan dan tunggu hingga proses building dan instalasi apk
aplikasi anda berjalan. Jika sudah, seharusnya hasilnya akan seperti ini.
Silakan masukan nilai panjang, lebar dan tinggi kemudian tekan tombol Hasil
dan whoilla hasilnya akan ditampilkan di obyek TextView tvHasil.

46

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Selesai? Belum, masih ada yang kurang , ketika setelah menghitung luas dan kemudian
terjadi pergantian orientasi pada device maka hasil perhitungan akan hilang.
Tambahkan beberapa baris berikut pada MainActivity.java

1. private static final String STATE_HASIL = "state_hasil";


2.
3. @Override
4. protected void onSaveInstanceState(Bundle outState) {
5.
6. outState.putString(STATE_HASIL, tvResult.getText().toString());
7. super.onSaveInstanceState(outState);
8. }

Kemudian tambahkan juga beberapa baris berikut pada baris terakhir method onCreate

1. if (savedInstanceState != null){
2. String hasil = savedInstanceState.getString(STATE_HASIL);
3. tvResult.setText(hasil);
4. }

4. Silakan jalankan aplikasi kembali kemudian coba lakukan perhitungan dan ganti
orientasi device. Jika sudah benar maka hasil perhitungan akan dijaga.

47

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


8. INTENT
Teori

Intent adalah mekanisme untuk melakukan sebuah action dan komunikasi antar komponen
aplikasi misal Activity, Services, dan Broadcast Receiver. Ada tiga penggunaan umum Intent
dalam aplikasi Android yaitu:

 Memindahkan satu Activity ke Activity lain dengan atau tidak membawa data.
 Menjalankan background Service misal melakukan sinkronisasi ke server dan
menjalankan proses berulang (periodic/scheduler task).
 Mengirimkan obyek broadcast ke app yang membutuhkan. Misal jika aplikasi
membutuhkan proses menjalankan sebuah background service setiap aplikasi selesai
melakukan booting. Aplikasi harus bisa menerima obyek Broadcast yang dikirimkan
oleh sistem Android untuk event booting tersebut.

Intent memiliki dua bentuk yaitu:

 Explicit Intent adalah tipe intent yang digunakan untuk menjalankan komponen dari
dalam sebuah aplikasi. Explicit intent bekerja dengan menggunakan nama kelas yang
dituju misal : com.mobile.activity.DetailActivity. Umumnya intent ini digunakan untuk
mengaktifkan komponen pada satu aplikasi.
 Implicit Intent adalah tipe intent yang tidak memerlukan detail nama kelas yang ingin
diaktifkan, ini memungkinkan komponen dari aplikasi lain bisa merespon request
intent yang dijalankan. Penggunaan tipe Intent ini umumnya diperuntukan untuk
menjalankan fitur/fungsi dari komponen aplikasi lain. Contohnya ketika kita
membutuhkan aplikasi kita untuk mengambil foto, daripada kita harus membuat
sendiri fungsi kamera lebih baik kita menyerahkan proses tersebut pada aplikasi
kamera bawaan dari device atau aplikasi kamera lain yang telah terinstal sebelumnya
di device atau juga jika kita membutuhkan untuk fungsi berbagi konten, kita bisa
memanfaatkan intent untuk menampilkan mana saja aplikasi yang bisa menawarkan
fungsi berbagi (share) konten. Implementasi Intent Implicit ini akan sangat
memudahkan bagi pengembang agar tetap fokus pada proses bisnis inti dari aplikasi
yang dikembangkan.

Baca dan pahami materi pada link berikut ini:


https://developer.android.com/guide/components/intents-filters

48

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


9. LATIHAN INTENT
Tujuan

Codelab ini menitik beratkan pada implementasi Intent untuk melakukan perpindahan dari
Activity ke Activity dengan atau tidak membawa data. Beberapa bagian dari code lab ini akan
menjawab beberapa pertanyaan umum dalam pengembangan aplikasi Android sebagai
berikut:

 Bagaimana berpindah dari satu Activity ke Activity lain?


 Bagaimana berpindah dari satu Activity ke Activity lain dengan membawa data?
o Single Value dari sebuah variable.
o Obyek Model Plain Old Java Object (POJO).
 Menjalankan komponen di aplikasi lain untuk keperluan membuka browser atau
melakukan pemanggilan melalui aplikasi telepon bawaan?
 Mengirimkan hasil nilai balik melalui Intent

Logika Dasar

Berpindah dari satu Activity ke Activity lain dengan membawa data. Activity asal
akan mengirimkan data melalui Intent dan Activity tujuan akan menerima data yang
dikirimkan.

1. Buat Project baru di Android Studio dengan kriteria sebagai berikut:


o Nama Project : MyIntentApp
o Target & Minimum Target SDK : Phone and Tablet; Api level 15
o Tipe Activity : Empty Activity
o Activuty Name : MainActivity
2. Selanjutnya kita akan membangun User Interface menjadi seperti ini:

49

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


3. Kita akan memiliki 5 tombol dengan fungsi yang berbeda-beda dan 1
buah TextView untuk menampilkan data yang berasal dari Intent. Baik, kita akan
mulai selangkah demi selangkah dimulai dari tombol yang paling atas.
Kondisikan activity_main.xml menjadi seperti ini:

50

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


o <?xml version="1.0" encoding="utf-8"?>
o <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
o xmlns:tools="http://schemas.android.com/tools"
o android:layout_width="match_parent"
o android:layout_height="match_parent"
o android:paddingBottom="@dimen/activity_vertical_margin"
o android:paddingLeft="@dimen/activity_horizontal_margin"
o android:paddingRight="@dimen/activity_horizontal_margin"
o android:paddingTop="@dimen/activity_vertical_margin"
o android:orientation="vertical"
o tools:context="com.mobile.associate.myintentapp.MainActivity">
o <Button
o android:id="@+id/btn_move_activity"
o android:layout_width="match_parent"
o android:layout_height="wrap_content"
o android:text="Pindah Activity"
o android:layout_marginBottom="@dimen/activity_vertical_margin"/>
o </LinearLayout>

Jangan lupa untuk menambahkan file dimens.xml secara manual di dalam res
values. Dan isikan file dimens.xml seperti berikut

o <resources>
o <!-- Default screen margins, per the Android Design guidelines. -->
o <dimen name="activity_horizontal_margin">16dp</dimen>
o <dimen name="activity_vertical_margin">16dp</dimen>
o </resources>
4. Lalu untuk MainActivity.java tambahkan beberapa baris seperti ini.
o public class MainActivity extends AppCompatActivity implements View.OnCl
ickListener{
o private Button btnMoveActivity;
o @Override
o protected void onCreate(Bundle savedInstanceState) {
o super.onCreate(savedInstanceState);
o setContentView(R.layout.activity_main);
o
o btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
o btnMoveActivity.setOnClickListener(this);
o }
o @Override
o public void onClick(View v) {
o switch (v.getId()){
o case R.id.btn_move_activity:
o break;
o }
o }
o }
5. Button btnMoveActivity akan memiliki fungsi untuk berpindah Activity ke Activity
lain. Sekarang kita buat Activity baru dengan cara sebagai berikut: Klik kanan di
package utama
aplikasi com.mobile.associate.myintentapp New Activity Empty Activity.

51

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Lalu isikan MoveActivity pada dialog. Ketika sudah klik finish.

55

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


6. Untuk menandakan perpindahan Activity berhasil, silakan tambahkan satu
buat TextView dan kondisikan activity_move.xml menjadi seperti berikut.

o <?xml version="1.0" encoding="utf-8"?>


o <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi
d"
o xmlns:tools="http://schemas.android.com/tools"
o android:layout_width="match_parent"
o android:layout_height="match_parent"
o android:paddingBottom="@dimen/activity_vertical_margin"
o android:paddingLeft="@dimen/activity_horizontal_margin"
o android:paddingRight="@dimen/activity_horizontal_margin"
o android:paddingTop="@dimen/activity_vertical_margin"
o tools:context="com.mobile.associate.myintentapp.MoveActivity">
o <TextView
o android:layout_width="match_parent"
o android:layout_height="wrap_content"
o android:text="Ini MoveActivity"/>
o </RelativeLayout>
7. Setelah Activity tujuan sudah berhasil diciptakan, sekarang saatnya menambahkan
sebuah Intent pada method onClick() di MainActivity.java menjadi sebagai berikut.

o public class MainActivity extends AppCompatActivity implements View.OnCl


ickListener{
o private Button btnMoveActivity;
o @Override
o protected void onCreate(Bundle savedInstanceState) {
o super.onCreate(savedInstanceState);
o setContentView(R.layout.activity_main);
o btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
o btnMoveActivity.setOnClickListener(this);
o }
o @Override
o public void onClick(View v) {
o switch (v.getId()){
o case R.id.btn_move_activity:
o Intent moveIntent = new Intent(MainActivity.this, MoveAct
ivity.class);
o startActivity(moveIntent);
o break;
o }
o }
o }

Selesai! Langkah pertama untuk memindahkan satu Activity ke Activity lain sudah selesai,
sekarang silakan jalankan aplikasi anda dengan mengklik tombol pada menu bar.
Seharusnya sekarang anda sudah bisa memindahkan Activity dengan mengklik tombol
‘Pindah Activity’.

56

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Bedah Kode

Kita telah belajar bagaimana membuat sebuah Activity baru, di materi sebelumnya syarat
sebuah Activity harus terdaftar pada file AndroidManifest.xml dan semenjak menggunakan
Android Studio proses pendaftaran Activity ke file AndroidManifest.xml dilakukan secara
otomatis tidak manual seperti di era eclipse.

1. <?xml version="1.0" encoding="utf-8"?>


2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3. package="com.mobile.associate.myintentapp">
4. <application
5. android:allowBackup="true"
6. android:icon="@mipmap/ic_launcher"
7. android:label="@string/app_name"
8. android:supportsRtl="true"
9. android:theme="@style/AppTheme">
10. <activity android:name=".MainActivity">
11. <intent-filter>
12. <action android:name="android.intent.action.MAIN" />
13. <category android:name="android.intent.category.LAUNCHER" />
14. </intent-filter>
15. </activity>
16. <activity android:name=".MoveActivity"></activity>
17. </application>
18. </manifest>

57

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Perhatikan bahwa MoveActivity sudah teregistrasi di AndroidManifest.xml dan sekarang
sudah aman jika kita melakukan perpindahan Activity dari MainActivity ke MoveActivity.
Umumnya, jika kita lupa meregistrasikan Activity baru ke dalam
file AndroidManifest.xml akan terjadi error seperti ini
android.content.ActivityNotFoundException:Unable to find explicit activity class
Ok, saya tahu kalian menanyakan maksud dari baris ini.

1. <intent-filter>
2. <action android:name="android.intent.action.MAIN" />
3. <category android:name="android.intent.category.LAUNCHER" />
4. </intent-filter>

Begini, Intent-filter merupakan mekanisme untuk menentukan bagaimana sebuah Activity


dijalankan oleh Android Runtime (ART) atau Dalvik Virtual Machine (DVM).

1. <action android:name="android.intent.action.MAIN" />

Baris diatas bermakna bahwa MainActivity memiliki Intent Action utama dari keseluruhan
Activity yang ada di sebuah Aplikasi. Sedangkan

1. <category android:name="android.intent.category.LAUNCHER" />

Bermakna, bahwa MainActivity akan dikategorikan sebagai Activity Launcher yang pertama
kali diluncurkan ketika pengguna mengklik icon aplikasi pada handset Android anda.
Selanjutnya,

1. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);

Kita membuat sebuah obyek Intent dengan cara seperti diatas dengan memberikan
Kelas Activity Asal (MainActivity.this) dan Kelas Activity tujuan (MoveActivity.class)
pada kontruktor kelas Intent (constructor).

Kelas asal selalu ditekankan dengan .this yang menandakan obyek kelas saat ini dan kelas
tujuan selalu ditekankan .class.
Jika kita membiarkan code assistant dari Android Studio, maka akan tampil rekomendasi
(code hint) sebagai berikut:

58

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Pada konteks diatas kita memilih Context packageContext, Class<?> cls sebagai inputan
untuk nilai kontruktor Intent.

startActivity(moveIntent); => method disamping akan menjalankan Activity baru tanpa


membawa data berdasarkan obyek Intent yang diinputkan pada case ini adalah obyek
moveIntent yang akan menjalankan MoveActivity.
Setelah kita telah berhasil memindahkan satu Activity ke Activity lain dengan tidak
membawa data. Nah, pada bagian selanjutnya kita akan membuat sebuah Intent yang
didalamnya akan membawa data ke Activity tujuan.

59

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


10. INTENT: EXPLICIT
Selanjutnya adalah kita akan membuat sebuah Intent yang didalamnya akan membawa data
ke Activity tujuan. Siap?

1. Ayo buka activity_main.xml lagi dan tambahkan satu tombol lagi dibawah tombol
sebelumnya sehingga kode activity_main.xml kita menjadi seperti ini.

1. <?xml version="1.0" encoding="utf-8"?>


2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. xmlns:tools="http://schemas.android.com/tools"
4. android:layout_width="match_parent"
5. android:layout_height="match_parent"
6. android:paddingBottom="@dimen/activity_vertical_margin"
7. android:paddingLeft="@dimen/activity_horizontal_margin"
8. android:paddingRight="@dimen/activity_horizontal_margin"
9. android:paddingTop="@dimen/activity_vertical_margin"
10. android:orientation="vertical"
11. tools:context="com.mobile.associate.myintentapp.MainActivity">
12. <Button
13. android:id="@+id/btn_move_activity"
14. android:layout_width="match_parent"
15. android:layout_height="wrap_content"
16. android:text="Pindah Activity"
17. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
18. <Button
19. android:id="@+id/btn_move_activity_data"
20. android:layout_width="match_parent"
21. android:layout_height="wrap_content"
22. android:text="Pindah Activity dengan Data"
23. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
24. </LinearLayout>

Tambahkan kembali dimens.xml secara manual di dalam res


filenya menjadi seperti berikut.

25. <resources>
26. <!-- Default screen margins, per the Android Design guidelines. -->
27. <dimen name="activity_horizontal_margin">16dp</dimen>
28. <dimen name="activity_vertical_margin">16dp</dimen>
29. </resources>
2. Setelah selesai dengan penambahan pada file activity_main.xml, maka dilanjutkan
dengan menambahkan beberapa baris berikut di MainActivity.java (yang ditebalkan).

60

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


1. public class MainActivity extends AppCompatActivity implements View.OnCl
ickListener{
2. private Button btnMoveActivity;
3. private Button btnMoveWithDataActivity;
4. @Override
5. protected void onCreate(Bundle savedInstanceState) {
6. super.onCreate(savedInstanceState);
7. setContentView(R.layout.activity_main);
8. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
9. btnMoveActivity.setOnClickListener(this);
10. btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_acti
vity_data);
11. btnMoveWithDataActivity.setOnClickListener(this);
12. }
13. @Override
14. public void onClick(View v) {
15. switch (v.getId()){
16. case R.id.btn_move_activity:
17. Intent moveIntent = new Intent(MainActivity.this, MoveAct
ivity.class);
18. startActivity(moveIntent);
19. break;
20. case R.id.btn_move_activity_data:
21. break;
22. }
23. }
24. }
3. Selanjutnya, buat Activity baru lagi seperti cara sebelumnya dan namakan Activity-nya
dengan MoveWithDataActivity. Lalu, pada activity_move_with_data.xml kita
tambahkan sebuah TextView ber-ID untuk menampilkan data yang dikirimkan dari
Activity asal.
1. <?xml version="1.0" encoding="utf-8"?>
2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi
d"
3. xmlns:tools="http://schemas.android.com/tools"
4. android:layout_width="match_parent"
5. android:layout_height="match_parent"
6. android:paddingBottom="@dimen/activity_vertical_margin"
7. android:paddingLeft="@dimen/activity_horizontal_margin"
8. android:paddingRight="@dimen/activity_horizontal_margin"
9. android:paddingTop="@dimen/activity_vertical_margin"
10. tools:context="com.mobile.associate.myintentapp.MoveWithDataActivity"
>
11. <TextView
12. android:id="@+id/tv_data_received"
13. android:layout_width="match_parent"
14. android:layout_height="wrap_content"
15. android:text="Data Received"/>
16. </RelativeLayout>

61

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


4. Selanjutnya pada MoveWithDataActivity.java kita kondisikan menjadi seperti
berikut:
1. public class MoveWithDataActivity extends AppCompatActivity {
2. public static String EXTRA_AGE = "extra_age";
3. public static String EXTRA_NAME = "extra_name";
4. private TextView tvDataReceived;
5. @Override
6. protected void onCreate(Bundle savedInstanceState) {
7. super.onCreate(savedInstanceState);
8. setContentView(R.layout.activity_move_with_data);
9. tvDataReceived = (TextView)findViewById(R.id.tv_data_received);
10. String name = getIntent().getStringExtra(EXTRA_NAME);
11. int age = getIntent().getIntExtra(EXTRA_AGE, 0);
12. String text = "Name : "+name+", Your Age : "+age;
13. tvDataReceived.setText(text);
14. }
15. }
5. Dan sekarang saatnya kita menambahkan obyek Intent
pada MainActivity.java seperti baris yang ditebalkan.
1. public class MainActivity extends AppCompatActivity implements View.OnCl
ickListener{
2. private Button btnMoveActivity;
3. private Button btnMoveWithDataActivity;
4. @Override
5. protected void onCreate(Bundle savedInstanceState) {
6. super.onCreate(savedInstanceState);
7. setContentView(R.layout.activity_main);
8. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
9. btnMoveActivity.setOnClickListener(this);
10. btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_acti
vity_data);
11. btnMoveWithDataActivity.setOnClickListener(this);
12. }
13. @Override
14. public void onClick(View v) {
15. switch (v.getId()){
16. case R.id.btn_move_activity:
17. Intent moveIntent = new Intent(MainActivity.this, MoveAct
ivity.class);
18. startActivity(moveIntent);
19. break;
20. case R.id.btn_move_activity_data:
21. Intent moveWithDataIntent = new Intent(MainActivity.this,
MoveWithDataActivity.class);
22. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NA
ME, "MobileAcademy Boy");
23. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AG
E, 5);
24. startActivity(moveWithDataIntent);
25. break;
26. }
27. }
28. }

62

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


6. Sekarang, silakan jalankan aplikasi anda lagi dan coba klik pada tombol ‘Pindah
Activity dengan Data’ dan Selamat! Seharusnya anda sudah bisa memindahkan satu
Activity ke Activity lain dengan membawa data.

Bedah Kode

Pada bagian sebelumnya anda sudah mempelajari bagaimana memindahkan satu Activity ke
Activity lain dengan membawa data. Dan itu sangat penting karena ketika kita
mengembangkan sebuah aplikasi Android yang kompleks maka akan banyak sekali Activity
yang terlibat dan perpindahan Activity dengan data akan menjadi sangat krusial dalam
memaksimalkan konten yang ada dengan experience yang diberikan oleh aplikasi kepada
pengguna.

1. Intent moveWithDataIntent = new Intent(MainActivity.this, MoveWithDataActivity


.class);
2. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "MobileAcademy Bo
y");
3. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE, 5);
4. startActivity(moveWithDataIntent);

Perbedaan mendasar antara memindahkan Activity dengan membawa data dan tidak adalah
dengan menempatkan data yang akan dikirim ke Activity tujuan pada baris ini.

1. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "MobileAcademy Bo
y");
2. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE, 5);

Kita memanfaatkan method putExtra() untuk mengirimkan data bersamaan dengan obyek
Intent. Sedangkan method putExtra() itu sendiri merupakan method yang menampung
pasangan Key-Value dan memiliki beberapa pilihan tipe input seperti berikut :

Hampir semua tipe data untuk input value disupport oleh method putExtra().

1. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME,"MobileAcademy Boy
");

63

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


⇒ Name : MoveWithDataActivity.EXTRA_NAME dimana EXTRA_NAME adalah variabel static
bertipe data String dan bernilai “extra_name” pada MoveWithDataActivity.java. penentuan
nilai untuk Key parameter untuk Intent adalah bebas disini kami merekomendasikan format
terbaik yang biasa diimplementasikan.
⇒ Value : MobileAcademy Boy.
Disini kita akan mengirimkan data bertipe String ke MoveWithDataActivity dan kemudian pada
MoveWithDataActivity akan dilakukan proses pengambilan nilai data berdasarkan Key yang
dikirimkan dengan menggunakan method getIntent().getStringExtra(key). Implementasinya
sebagai berikut:

1. String name = getIntent().getStringExtra(EXTRA_NAME);

Catatan : Key yang dikirimkan via putExtra() harus sama dengan Key sewaktu mengambil nilai
dari data yang dikirimkan melalui getStringExtra()
Dalam konteks diatas key yang dikirimkan dan key sewaktu mengambil nilai data adalah sama
yaitu EXTRA_NAME (yang bernilai “extra_name”) dan nilai dari data yang dikirimkan via Intent
disimpan kedalam variable name bertipe data String.
Begitu juga dengan,

1. int age = getIntent().getIntExtra(EXTRA_AGE, 0);

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”)

Sekali lagi selamat! Anda telah mempelajari dua Intent explicit dengan atau tidak membawa
data. Sebelumnya, mengirimkan data bernilai tunggal dari satu Activity ke Activity lain adalah
hal yang mudah. Bernilai tunggal karena data yang dikirimkan berasal dari satu tipe data.
Misal diatas, pengiriman nilai data name dan age dilakukan secara sendiri-sendiri, yang satu
bertipe data String dan yang lainnya bertipe data integer. Sekarang pertanyaanya bagaimana
anda bisa mengirimkan data dalam bentuk Plain Old Java Object (POJO) dari satu Activity ke
Activity lain melalui Intent? Caranya adalah dengan mengkonversi Object POJO yang anda
miliki ke dalam bentuk parcelable object.

64

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


11. INTENT: IMPLICIT
Baik, anda sudah belajar bagaimana menggunakan Intent dengan tipe eksplisit, sekarang
saat-nya anda melanjutkan ke Intentdengan tipe implicit.

1. Buka kembali activity_main.xml tambahkan satu tombol lagi sebagai berikut :

1. <Button
2. android:id="@+id/btn_dial_number"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:text="Dial a Number"
6. android:layout_marginBottom="@dimen/activity_vertical_margin"/>

Sehingga file activity_main.xml kita sekarang menjadi:

7. <?xml version="1.0" encoding="utf-8"?>


8. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
9. xmlns:tools="http://schemas.android.com/tools"
10. android:layout_width="match_parent"
11. android:layout_height="match_parent"
12. android:paddingBottom="@dimen/activity_vertical_margin"
13. android:paddingLeft="@dimen/activity_horizontal_margin"
14. android:paddingRight="@dimen/activity_horizontal_margin"
15. android:paddingTop="@dimen/activity_vertical_margin"
16. android:orientation="vertical"
17. tools:context="com.dicoding.associate.myintentapp.MainActivity">
18. <Button
19. android:id="@+id/btn_move_activity"
20. android:layout_width="match_parent"
21. android:layout_height="wrap_content"
22. android:text="Pindah Activity"
23. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
24. <Button
25. android:id="@+id/btn_move_activity_data"
26. android:layout_width="match_parent"
27. android:layout_height="wrap_content"
28. android:text="Pindah Activity dengan Data"
29. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
30. <Button
31. android:id="@+id/btn_dial_number"
32. android:layout_width="match_parent"
33. android:layout_height="wrap_content"
34. android:text="Dial a Number"
35. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
36. </LinearLayout>
2. Sekarang, buka kembali MainActivity.java dan lanjutkan dengan melakukan casting
tombol Dial Number, set listener dan menambahkan action ketika tombol diklik.

65

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


1. public class MainActivity extends AppCompatActivity implements View.OnCl
ickListener{
2. private Button btnMoveActivity;
3. private Button btnMoveWithDataActivity;
4. private Button btnDialPhone;
5. @Override
6. protected void onCreate(Bundle savedInstanceState) {
7. super.onCreate(savedInstanceState);
8. setContentView(R.layout.activity_main);
9. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
10. btnMoveActivity.setOnClickListener(this);
11. btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_acti
vity_data);
12. btnMoveWithDataActivity.setOnClickListener(this);
13. btnDialPhone = (Button)findViewById(R.id.btn_dial_number);
14. btnDialPhone.setOnClickListener(this);
15. }
16. @Override
17. public void onClick(View v) {
18. switch (v.getId()){
19. case R.id.btn_move_activity:
20. Intent moveIntent = new Intent(MainActivity.this, MoveAct
ivity.class);
21. startActivity(moveIntent);
22. break;
23. case R.id.btn_move_activity_data:
24. Intent moveWithDataIntent = new Intent(MainActivity.this,
MoveWithDataActivity.class);
25. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NA
ME, "DicodingAcademy Boy");
26. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AG
E, 5);
27. startActivity(moveWithDataIntent);
28. break;
29. case R.id.btn_dial_number:
30. String phoneNumber = "081210841382";
31. Intent dialPhoneIntent = new Intent(Intent.ACTION_DIAL, U
ri.parse("tel:"+phoneNumber));
32. startActivity(dialPhoneIntent);
33. break;
34. }
35. }
36. }

Setelah selesai, silakan jalankan lagi aplikasi anda dan yeay, anda sudah bisa men-dial
sebuah nomor telepon melalui aplikasi telepon bawaan dari Android/Device anda.
Selamat!

66

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Bedah Kode

1. String phoneNumber = "081210841382";


2. Intent dialPhoneIntent = new Intent(Intent.ACTION_DIAL, Uri.par
se("tel:"+phoneNumber));
3. startActivity(dialPhoneIntent);

Baru saja kita mengimplementasikan penggunaan Intent secara implicit untuk melakukan
proses dial sebuah no telepon. new Intent(Intent.ACTION_DIAL,
Uri.parse("tel:"+phoneNumber)); kita menggunakan inputan new Intent(ACTION,
Uri); pada konstruktor sewaktu menciptakan obyek Intent dimana :
Action : Intent.ACTION_DIAL
Uri : Uri.parse("tel:"+phoneNumber)
Variabel ACTION_DIAL menentukan intent filter dari aplikasi-aplikasi yang bisa menghandle
Action tersebut. Disini aplikasi yang memiliki kemampuan untuk komunikasi akan tampil pada
opsi pilihan yang tampil ke pengguna. Selain ACTION_DIAL, di Android sudah tersedia
berbagai Action yang tinggal didefinisikan sewaktu menciptakan obyek Intent untuk
mengakomodir berbagai tujuan.
Silakan cek link berikut untuk detailnya :

 Intent (https://developer.android.com/reference/android/content/Intent.html)

Buat yang belum tau apa itu Uri, berikut penjelasan singkatnya :
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 method static parse(String). Secara struktur dibagi menjadi :

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 sisanya bisa dilihat di halaman ini :

 Common Intents (https://developer.android.com/guide/components/intents-common.html)

67

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id


Pada prosesnya, pemanggilan Intent secara implicit akan berjalan sesuai dengan diagram
dibawah ini.

1. Aplikasi kita menjalankan Intent untuk ACTION_DIAL melalui startActivity().


2. Sistem Android akan melakukan seleksi terhadap semua aplikasi yang memiliki
kemampuan untuk handle Action tersebut, Sistem Android akan menentukan aplikasi
mana saja yang bisa memproses action berdasarkan
pada IntentFilter pada AndroidManifest.xml masing-masing aplikasi.
Sistem Android akan menampilkan opsi-opsi aplikasi-aplikasi mana saja yang bisa
menghandle 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
3. Aplikasi yang dipilih pun muncul di layar dengan no telepon yang sudah diset.

68

PEMROGRAMAN MOBILE I | JUNADHI www.stmik-amik-riau.ac.id

Anda mungkin juga menyukai