Modul Pemrograman Mobile BAB IV 2021
Modul Pemrograman Mobile BAB IV 2021
BAB IV
ACTIVITY
Activity (aktivitas) menyatakan layar tunggal di aplikasi Anda dengan antarmuka yang bisa
digunakan pengguna untuk berinteraksi. Misalnya, pada smartphone anda terdapat sebuah aplikasi
email. Aplikasi email tersebut mungkin memiliki beberapa aktivitas diantaranya sebuah aktivitas
yang menampilkan daftar email baru, aktivitas untuk menulis email, dan aktivitas lainnya lagi untuk
membaca pesan satu per satu. Pada dasarnya, aplikasi Anda adalah koleksi aktivitas yang dibuat
sendiri atau yang digunakan kembali dari aplikasi lain.
Meskipun aktivitas di aplikasi Anda bekerja sama satu sama lain untuk membentuk user
experience yang kohesif, setiap aktivitas tidak tergantung pada yang lain. Ini memungkinkan aplikasi
Anda untuk memulai aktivitas di aplikasi lain, dan itu memungkinkan aplikasi lain untuk memulai
aktivitas di aplikasi Anda (jika aplikasi Anda memungkinkan ini). Misalnya, aplikasi olah pesan
dapat memulai aktivitas dalam aplikasi kamera untuk mengambil gambar, kemudian memulai
aktivitas dalam aplikasi email untuk memungkinkan pengguna berbagi gambar dalam email.
102
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Biasanya, satu Aktivitas dalam aplikasi ditentukan sebagai aktivitas "utama", misalnya
MainActivity. Pengguna akan melihat aktivitas utama ketika mereka meluncurkan aplikasi untuk
pertama kalinya. Setiap aktivitas dapat memulai aktivitas lain untuk melakukan aksi yang berbeda.
Setiap kali aktivitas baru dimulai, aktivitas sebelumnya dihentikan, tetapi sistem
mempertahankan aktivitas dalam tumpukan ("back stack"). Ketika pengguna selesai dengan aktivitas
saat ini dan menekan tombol Kembali, aktivitas tersebut muncul dari tumpukan dan dihancurkan,
dan aktivitas sebelumnya dilanjutkan.
Ketika suatu aktivitas dihentikan karena aktivitas baru dimulai, aktivitas pertama akan
diberitahu melalui metode panggilan balik siklus aktivitas. Siklus hidup aktivitas adalah sekumpulan
status yang dapat diikuti oleh Aktivitas: saat aktivitas pertama kali dibuat, saat dihentikan atau
dilanjutkan, dan saat sistem menghancurkannya.
2. Buka res/layout/activity_main.xml.
3. Konversi layout ke relative layout dan tambahkan padding 15dp
pada semua sisi layout.
103
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
104
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
105
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
MainActivity.class.getSimpleName();
Setiap aktivitas baru yang Anda tambahkan ke proyek Anda memiliki layout XML dan file
Java sendiri, terpisah dari aktivitas utama. Mereka juga memiliki elemen <activity> mereka sendiri
dalam Android manifest. Seperti halnya aktivitas utama, aktivitas baru yang Anda buat di Android
Studio juga diperluas (extend) dari AppCompatActivity class.
Semua aktivitas di aplikasi Anda hanya terhubung secara fleksibel satu sama lain. Namun,
Anda dapat menetapkan suatu aktivitas sebagai induk dari aktivitas lain dalam file
AndroidManifest.xml. Hubungan parent-child ini memungkinkan Android untuk menambahkan
petunjuk navigasi seperti panah yang menghadap ke kiri di bilah judul untuk setiap aktivitas.
Aktivitas berkomunikasi satu sama lain (baik di aplikasi yang sama dan di aplikasi yang
berbeda) dengan Intent. Ada dua jenis Intent, eksplisit dan implisit. Intent eksplisit adalah tujuan di
mana target Intent itu diketahui, yaitu, Anda sudah tahu nama kelas yang sepenuhnya memenuhi
syarat untuk aktivitas spesifik itu. Intent implisit adalah Intent di mana Anda tidak memiliki nama
komponen target, tetapi memiliki tindakan umum untuk dilakukan.
Dalam praktikum ini Anda akan menambahkan aktivitas kedua ke aplikasi, dengan
layoutnya sendiri. Anda akan memodifikasi Android manifest untuk menetapkan aktivitas utama
sebagai induk dari aktivitas kedua. Kemudian Anda akan memodifikasi onClick event method di
aktivitas utama untuk memasukkan Intent yang meluncurkan aktivitas kedua ketika Anda mengklik
button.
1. Klik folder aplikasi untuk proyek Anda dan pilih File > New >
Activity > Empty Activity.
106
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
<activity android:name=".AktivitasKedua"></activity>
107
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
108
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
109
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
startActivity(Intent);
Pada prkatikum sebelumnya, Anda menambahkan Intent eksplisit ke aktivitas utama yang
mengaktifkan aktivitas kedua. Anda juga dapat menggunakan Intent untuk mengirim data dari satu
aktivitas ke aktivitas lainnya.
Dalam tugas ini, Anda akan memodifikasi Intent eksplisit dalam aktivitas utama untuk
memasukkan data tambahan (dalam hal ini, string yang dimasukkan pengguna) dalam ekstra Intent.
Anda kemudian akan memodifikasi aktivitas kedua untuk mendapatkan kembali data dari ekstra
Intent dan menampilkannya di layar.
1. Buka res/layout/activity_main.xml.
2. Tambahkan tampilan EditText (Teks Biasa di Editor Layout.)
Berikan EditText atribut ini:
No Nama atribut Nilai
110
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
1 android:id "@+id/editText_main"
2 android:layout_width match_parent
3 android:layout_height wrap_content
4 android:layout_toLeftOf "@+id/button_main"
5 android:layout_toStartOf "@+id/button_main"
6 android:layout_alignParentBottom "true"
7 android:hint "Masukkan pesan anda di
sini!"
111
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mMessageEditText = (EditText)
findViewById(R.id.editText_main);
112
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Intent.putExtra(EXTRA_MESSAGE, message);
113
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
String message =
Intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView TextView =
(TextView)findViewById(R.id.text_message);
TextView.setText(message);
Sekarang Anda memiliki aplikasi yang meluncurkan aktivitas baru dan mengirimkan data
ke sana, langkah terakhir adalah mengembalikan data dari aktivitas kedua kembali ke aktivitas
utama. Anda juga akan menggunakan Intent dan ekstra Intent untuk tugas ini.
114
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
2 android:onClick= android:onClick="kembalikanBalasan"
"launchSecondActivity"
3 android:text= android:text= "@string/button_kedua"
"@string/button_main"
2 android:layout_toLeftOf= android:layout_toLeftOf=
"@+id/button_main" "@+id/button_second"
3 android:layout_toStartOf= android:layout_toStartOf=
"@+id/button_main" "@+id/button_kedua"
4 android:hint= android:hint=
"@string/editText_main" "@string/editText_kedua"
<string name="button_kedua">Balas</string>
<string name="editText_kedua"> Masukkan pesan balasan di sini!
</string>
115
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
5. Buka AktivitasKedua.java
6. Di bagian atas kelas, tambahkan konstanta publik untuk
mendefinisikan kunci untuk Intent ekstra:
116
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
setResult(RESULT_OK,replyIntent);
finish();
13. Salin dua TextView untuk tampilan pesan dari file layout
aktivitas kedua dan tempelkan ke layout utama di atas EditText
dan Button view yang ada.
14. Ubah nilai atribut untuk kedua TextView baru ini. Gunakan
nilai-nilai ini:
117
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
android:visibility="invisible"
118
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mReplyHeadTextView = (TextView)
findViewById(R.id.text_header_reply);
mReplyTextView = (TextView)
findViewById(R.id.text_message_reply);
119
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
startActivityForResult(Intent, TEXT_REQUEST);
if (requestCode == TEXT_REQUEST) {
if (resultCode == RESULT_OK) {
}
}
25. Di bagian dalam blok if, dapatkan Intent ekstra dari Intent
respons (data). Di sini kunci untuk ekstra adalah konstanta
EXTRA_REPLY dari AktivitasKedua:
String reply =
data.getStringExtra(SecondActivity.EXTRA_REPLY);
mReplyHeadTextView.setVisibility(View.VISIBLE);
120
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mReplyTextView.setText(reply);
mReplyTextView.setVisibility(View.VISIBLE);
121
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Output Praktikum 4.
Berdasarkan praktikum yang telah Anda kerjakan, lengkapi isian
berikut:
• Screenshot layer smartphone pengiriman pesan dari aktivitas
utama ke aktivitas kedua.
122
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Jawaban:
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
……………………………………………………………………….………………………………………………………
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
……………….………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
………………………………………………………………………………………….……………………………………
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
………………………………………………………..………………………………….
123
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Latihan 4.2.
1. Buat aplikasi dengan tiga tombol berlabel: Teks Satu, Teks Dua,
dan Teks Tiga. Ketika salah satu dari tombol itu diklik, maka
aktivitas kedua diluncurkan. Aktivitas kedua tersebut harus
berisi ScrollView yang menampilkan salah satu dari tiga kalimat
teks (teks yang ditampilkan berbeda, tergantung pada tombol
yang ditekan). Gunakan Intent untuk meluncurkan aktivitas kedua
dan ekstra intent untuk menunjukkan yang mana dari ketiga
kalimat yang akan ditampilkan.
Jawaban:
• Screenshot layer smartphone pengiriman pesan dari aktivitas
utama ke aktivitas kedua (button 1).
124
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
125
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Latihan 4.3.
1. Modifikasi project yang anda kerjakan pada praktikum di atas.
Buat aplikasi dengan tiga tombol yang akan mengirimkan 3 pesan
ke tiga aktivitas berbeda tergantung pada tombol yang ditekan.
Kemudian dari aktivitas yang tampil kembali akan dikirimkan
pesan balasan yang akan ditampilkan pada aktivitas utama.
Jawaban:
• Screenshot layer smartphone pengiriman pesan dari aktivitas
utama ke aktivitas kedua (button 1).
126
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
127
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
128
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Setiap tahap dalam siklus hidup suatu kegiatan memiliki metode callback yang sesuai
(onCreate (), onStart (), onPause (), dan sebagainya). Ketika suatu aktivitas berubah status, metode
callback terkait dipanggil. Pada program sebelumnya yang telah dikerjakan, Anda telah melihat
salah satu metode ini: onCreate (). Dengan menimpa salah satu metode callback siklus hidup di
kelas aktivitas Anda, Anda dapat mengubah perilaku default bagaimana perilaku aktivitas Anda
dalam menanggapi pengguna atau sistem dengan aksi berbeda.
Perubahan pada status aktivitas juga dapat terjadi sebagai respons terhadap perubahan
konfigurasi perangkat seperti memutar perangkat dari potret ke lanskap. Perubahan konfigurasi ini
menghasilkan aktivitas yang dihancurkan dan seluruhnya diciptakan kembali dalam keadaan
default, yang dapat menyebabkan hilangnya informasi yang dimasukkan pengguna dalam aktivitas
itu. Sangat penting untuk mengembangkan aplikasi Anda untuk mencegah hal ini untuk
menghindari kebingungan pengguna. Selanjutnya dalam praktik ini kita akan bereksperimen
dengan perubahan konfigurasi dan mempelajari cara mempertahankan status aktivitas Anda
sebagai respons terhadap perubahan konfigurasi perangkat atau peristiwa siklus hidup Aktivitas
lainnya.
129
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Dalam praktik ini, Anda akan menambahkan pernyataan logging ke aplikasi DuaAktivitas
yang telah dikerjakan sebelumnya pada bagian A dan mengamati perubahan siklus hidup saat Anda
menggunakan aplikasi dengan berbagai cara.
Anda kemudian akan mulai bekerja dengan perubahan ini dan menjelajahi cara menangani
input pengguna dalam kondisi ini.
@Override
protected void onStart() {
super.onStart();
Log.d(LOG_TAG,"--------Saat ini dalam fase: ------");
Log.d(LOG_TAG,"onStart");
}
130
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
131
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
……………………………………………………………………….………………………………………………………
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
……………….………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
………………………………………………………………………………………….……………………………………
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
………………………………………………………..………………………………….……………………………………
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
………………………………….……………………………………………………………………………………………
…………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………….…………………
…………………………………………………………………………………………………………………………………
132
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
……………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………
………………………………………………………………………………….…………………………………………
……………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………
……………………………………….……………………………………………………………………………………
……………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………….…
……………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………
……………………………………………………………………………………………………..……………………
…………….………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………
……………………………………………………………………………………………….……………………………
……………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………
…………………………………………………….………………………………………………………………………
133
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
• Fase apa saja yang terjadi pada saat anda menggunakan tombol
back untuk kembali dari aktivitas kedua ke aktivitas utama
134
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
• Fase apa saja yang terjadi pada saat anda menggunakan panah
kembali pada Action Bar untuk kembali dari aktivitas kedua ke
aktivitas utama
• Fase apa saja yang terjadi pada saat anda merotasi perangkat
anda pada kedua aktifitas
• Fase apa saja yang terjadi pada saat anda menekan tombol
overview (tombol yang berda di dekat tombol home) dan tombol
keluar dari aplikasi
135
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
• Fase apa saja yang terjadi pada saat anda kembali ke home
screen perangkat anda lalu kembali masuk ke aplikasi
Bergantung pada sumber daya sistem dan perilaku pengguna, aktivitas di aplikasi Anda
mungkin dihancurkan dan direkonstruksi jauh lebih sering daripada yang Anda bayangkan. Anda
mungkin telah memperhatikan serangkaian aktivitas ini di bagian terakhir ketika Anda memutar
perangkat atau emulator. Memutar perangkat adalah salah satu contoh perubahan konfigurasi
perangkat. Meskipun rotasi adalah yang paling umum, semua perubahan konfigurasi mengakibatkan
aktivitas saat ini dihancurkan dan diciptakan kembali seolah-olah itu baru. Jika Anda tidak
memperhitungkan perilaku ini dalam kode Anda, ketika perubahan konfigurasi terjadi, tata letak
aktivitas Anda dapat kembali ke tampilan default dan nilai awal, dan pengguna Anda mungkin
kehilangan tempat, data mereka, atau keadaan kemajuan mereka dalam aplikasi Anda.
Keadaan masing-masing aktivitas disimpan sebagai satu set pasangan kunci / nilai dalam
objek Bundel yang disebut activity instance state. Sistem menyimpan informasi status default ke
bundel keadaan instance tepat sebelum aktivitas dihentikan, dan meneruskan bundel itu ke instance
aktivitas baru untuk dipulihkan.
Agar tidak kehilangan data dalam aktivitas Anda saat dihancurkan dan dibuat ulang secara
tak terduga, Anda perlu menerapkan metode onSaveInstanceState (). Sistem memanggil metode ini
pada aktivitas Anda (antara onPause () dan onStop ()) ketika ada kemungkinan aktivitas tersebut
dapat dihancurkan dan diciptakan kembali.
Data yang Anda simpan dalam keadaan instance hanya spesifik untuk instance aktivitas
khusus ini selama sesi aplikasi saat ini. Saat Anda berhenti dan memulai kembali sesi aplikasi baru,
136
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
status instance aktivitas hilang dan aktivitas Anda akan kembali ke tampilan defaultnya. Jika Anda
perlu menyimpan data pengguna di antara sesi aplikasi, gunakan preferensi bersama atau database.
Anda mungkin telah memperhatikan bahwa memutar perangkat tidak mempengaruhi
kondisi aktivitas kedua sama sekali. Ini karena tata letak dan status aktivitas kedua dihasilkan dari
tata letak dan intent yang mengaktifkannya. Bahkan jika aktivitas diciptakan kembali, intent masih
ada dan data dalam intent itu masih digunakan setiap kali fase onCreate () aktivitas kedua dipanggil.
Selain itu, Anda mungkin memperhatikan bahwa dalam kedua aktivitas tersebut, teks apa
pun yang Anda ketikkan ke dalam pesan atau balas EditTeks tetap dipertahankan meskipun
perangkat diputar. Ini karena informasi keadaan beberapa tampilan dalam tata letak Anda secara
otomatis disimpan di seluruh perubahan konfigurasi, dan nilai EditText saat ini adalah salah satu dari
kasus tersebut.
Satu-satunya status aktivitas yang Anda mungkin perlu perhatikan dengan baik adalah
TextViews untuk header balasan dan teks balasan di aktivitas utama. Kedua TextViews tidak terlihat
secara default; mereka hanya muncul setelah Anda mengirim pesan kembali ke aktivitas utama dari
aktivitas kedua. Saat anda merotasi perangkat anda, data yang ditampilkan hilang. Dalam praktikum
berikut ini Anda akan menambahkan kode untuk mempertahankan keadaan instance dari dua
TextViews ini menggunakan onSaveInstanceState ().
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
137
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
outState.putString("reply_text",mReplyTextView.getText().toS
tring());
Setelah Anda menyimpan keadaan instance aktivitas, Anda juga harus mengembalikannya
saat aktivitas dibuat ulang. Anda bisa melakukan ini di onCreate(), atau dengan
mengimplementasikan callbak onRestoreInstanceState(), yang dipanggil setelah onStart() setelah
aktivitas dibuat. Akan lebih baik untuk memulihkan status aktivitas di onCreate(), untuk memastikan
bahwa antarmuka pengguna Anda termasuk keadaan tersedia sesegera mungkin. Kadang-kadang
nyaman untuk melakukannya di onRestoreInstanceState () setelah semua inisialisasi telah dilakukan,
atau untuk memungkinkan subkelas untuk memutuskan apakah akan menggunakan implementasi
default Anda.
if(savedInstanceState!=null){
}
138
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
if(savedInstanceState!=null){
boolean isVisible =
savedInstanceState.getBoolean("reply_visible");
}
if (isVisible){
}
mReplyHeadTextView.setVisibility(View.VISIBLE);
mReplyTextView.setText(savedInstanceState.getString("reply_t
ext"));
139
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mReplyTextView.setVisibility(View.VISIBLE);
140
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Dalam praktik ini Anda akan membangun aplikasi yang mengirimkan tiga intent implisit:
untuk membuka URL di browser web, untuk membuka lokasi di peta, dan untuk membagikan sedikit
teks.
Berbagi - mengirim sepotong informasi kepada orang lain melalui email atau media sosial -
adalah fitur yang umum dan populer di banyak aplikasi. Untuk tindakan berbagi, kita akan
menggunakan kelas ShareCompat.IntentBuilder, yang memudahkan untuk membangun intent untuk
berbagi data.
Terakhir, kita akan membuat aplikasi penerima intent sederhana yang menerima intent
implisit untuk tindakan tertentu.
<string
name="edittext_uri">http://developer.android.com</string>
<string name="button_uri">Open Website</string>
141
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.android.implicitintents.MainActiv
ity"
android:orientation="vertical">
142
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
2 android:layout_width "match_parent"
3 android:layout_height "wrap_content"
4 android:text "@string/edittext_loc"
143
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
144
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mWebsiteEditText = (EditText)
findViewById(R.id.website_edittext);
145
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
if (intent.resolveActivity(getPackageManager()) != null) {
}
startActivity(intent);
10. Tambahkan blok lain untuk mencetak pesan log jika intentnya
tidak dapat diselesaikan.
else {
Log.d("ImplicitIntents", "Can't handle this!");
}
146
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mLocationEditText = (EditText)
findViewById(R.id.location_edittext);
147
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Log.d("ImplicitIntents", "Can't handle this intent!");
}
148
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
mShareTextEditText = (EditText)
findViewById(R.id.share_edittext);
149
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
ShareCompat.IntentBuilder
.from(this)
.setType(mimeType)
.setChooserTitle("Share this text with: ")
.setText(txt)
.startChooser();
No Metode Deskripsi
1 from() Aktivitas yang melucurkan intent share saat ini
(this).
2 setType() Tipe MIME dari item yang akan dishare.
3 setChooserTitle() Judul yang muncul pada system pemilihan app.
4 setText() Text actual yang akan dishare.
5 startChooser() Menampilkan system pemilihan app dan mengirimkan
intent.
150
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
ShareCompat.IntentBuilder
.from(this)
.setType(mimeType)
.setChooserTitle("Share this text with: ")
.setText(txt)
.startChooser();
}
151
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
Sejauh ini, Anda telah membuat aplikasi yang menggunakan intent eksplisit dan implisit
untuk meluncurkan beberapa aktivitas aplikasi lain. Dalam praktikum berikut ini kita akan melihat
152
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
masalah dari sebaliknya: memungkinkan aktivitas di aplikasi Anda untuk menanggapi intent implisit
yang dikirim dari beberapa aplikasi lain.
Aktivitas di aplikasi Anda selalu dapat diaktifkan dari dalam atau di luar aplikasi Anda
dengan intent eksplisit. Untuk mengizinkan suatu kegiatan menerima intent implisit, Anda
menetapkan filter intent dalam manifes Anda untuk menunjukkan intent implisit mana yang tertarik
untuk ditangani oleh aktivitas Anda.
Untuk mencocokkan permintaan Anda dengan aplikasi spesifik yang diinstal pada
perangkat, sistem Android mencocokkan intent implisit Anda dengan aktivitas yang filter intentnya
menunjukkan bahwa mereka dapat melakukan tindakan itu.
Jika ada beberapa aplikasi yang diinstal yang cocok, pengguna disajikan dengan pemilih
aplikasi yang memungkinkan mereka memilih aplikasi mana yang ingin mereka gunakan untuk
menangani intent itu.
Ketika sebuah aplikasi pada perangkat mengirimkan intent implisit, sistem Android
mencocokkan tindakan dan data intent itu dengan aktivitas yang tersedia yang menyertakan filter
intent yang benar. Jika filter intent aktivitas Anda cocok dengan intent, aktivitas Anda dapat
menangani intent itu sendiri (jika itu satu-satunya aktivitas yang cocok), atau (jika ada beberapa yang
cocok) pemilih aplikasi muncul untuk memungkinkan pengguna untuk memilih aplikasi mana yang
mereka inginkan.
Dalam praktikum berikut ini Anda akan membuat aplikasi yang sangat sederhana yang
menerima intent implisit untuk membuka URI untuk halaman web.
Saat diaktifkan oleh intent tersirat, aplikasi itu menampilkan URI yang diminta sebagai
string di TextView.
No Attribut Value
1 android:id "@+id/text_uri_message"
153
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
2 android:layout_width wrap_content
3 android:layout_height wrap_content
4 android:textSize "18sp"
5 android:textStyle "bold"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
154
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
<data android:scheme="http"
android:host="developer.android.com" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
155
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<category
android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="developer.android.com" />
</intent-filter>
</activity>
</application>
Dalam metode onCreate () untuk aktivitas Anda, Anda memproses intent yang masuk untuk
setiap data atau tambahan yang disertakan. Dalam hal ini, maksud tersirat masuk memiliki URI
disimpan dalam data Intent.
156
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
if (uri != null) {
String uri_string = "URI: " + uri.toString();
}
textView.setText(uri_string);
157
MODUL PEMROGRAMAN MOBILE DENGAN ANDROID STUDIO – ANDI BASO KASWAR
9. Tekan tombol back, dan masukkan URI yang lain, lalu klik open
website
Aplikasi penerima memiliki filter intent sangat terbatas yang
hanya cocok dengan protokol URI (http) dan host
(developer.android.com). URI lain terbuka di browser web
default.
158