Skip to content

Most visited

Recently visited

navigation

Mengirim Pengguna ke Aplikasi Lain

Salah satu fitur terpenting Android adalah kemampuan aplikasi mengirim pengguna ke aplikasi lain berdasarkan “aksi” yang ingin dilakukannya. Misalnya, jika aplikasi Anda memiliki alamat bisnis yang ingin ditampilkan pada peta, Anda tidak harus membangun aktivitas dalam aplikasi yang menampilkan peta. Sebagai gantinya, Anda bisa membuat permintaan untuk melihat alamat itu menggunakan Intent. Sistem Android kemudian memulai aplikasi yang mampu menampilkan alamat itu pada peta.

Seperti dijelaskan di kelas pertama, Membangun Aplikasi Pertama Anda, Anda harus menggunakan maksud untuk berpindah di antara aktivitas dalam aplikasi Anda sendiri. Secara umum, Anda melakukannya dengan maksud eksplisit, yang mendefinisikan nama kelas persis dari komponen yang ingin Anda mulai. Akan tetapi, bila Anda ingin aplikasi terpisah melakukan suatu aksi, misalnya ”menampilkan peta,” Anda harus menggunakan maksud implisit.

Pelajaran ini menampilkan kepada Anda cara membuat maksud implisit bagi aksi tertentu, dan cara menggunakannya untuk memulai aktivitas yang melakukan aksi itu dalam aplikasi lain.

Membangun Maksud Implisit

Maksud implisit tidak mendeklarasikan nama kelas komponen yang akan dimulai, melainkan mendeklarasikan aksi yang akan dilakukan. Aksi ini menetapkan hal yang ingin Anda lakukan, misalnya lihat, edit, kirim, atau ambil sesuatu. Maksud juga sering berisi data yang dikaitkan dengan aksi, misalnya alamat yang ingin Anda lihat, atau pesan email yang ingin Anda kirim. Bergantung pada maksud yang ingin Anda buat, data bisa berupa Uri, salah satu tipe data lain, atau maksud mungkin tidak memerlukan data sama sekali.

Jika data berupa Uri, ada sebuah konstruktor Intent()sederhana yang bisa Anda gunakan untuk mendefinisikan aksi dan data.

Misalnya, inilah cara membuat maksud untuk memulai panggilan telepon menggunakan data Uri untuk menetapkan nomor ponsel:

Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);

Bila aplikasi Anda memicu maksud ini dengan memanggil startActivity(), Aplikasi telepon akan memulai panggilan ke nomor ponsel yang diberikan.

Inilah sepasang maksud lain dan aksinya serta pasangan data Uri:

Jenis maksud implisit lainnya memerlukan data “ekstra” yang menyediakan tipe data berbeda, misalnya string. Anda bisa menambahkan satu atau beberapa potongan data ekstra yang menggunakan beragam metode putExtra().

Secara default, sistem menentukan tipe MIME yang sesuai dengan yang diperlukan oleh maksud berdasarkan data Uri yang disertakan. Jika Anda tidak menyertakan Uri dalam maksud, biasanya Anda harus menggunakan setType() untuk menetapkan tipe data yang dikaitkan dengan maksud. Menyetel tipe MIME akan menetapkan lebih jauh jenis aktivitas yang akan menerima maksud.

Inilah beberapa maksud lainnya yang menambahkan data ekstra untuk menetapkan aksi yang diinginkan:

Catatan: Anda perlu mendefinisikan Intent sespesifik mungkin. Misalnya, jika Anda ingin menampilkan gambar menggunakan maksud ACTION_VIEW, Anda harus menetapkan tipe MIME image/*. Hal ini mencegah aplikasi yang bisa “menampilkan” tipe data lain (seperti aplikasi peta) agar tidak terpicu oleh maksud.

Memverifikasi Adanya Aplikasi yang akan Menerima Maksud

Walaupun platform Android menjamin bahwa maksud tertentu akan dicocokkan ke salah satu aplikasi bawaan (misalnya aplikasi Phone, Email, atau Kalender), Anda harus selalu menyertakan langkah verifikasi sebelum memanggil maksud.

Perhatian: Jika Anda memanggil maksud dan tidak ada aplikasi yang tersedia pada perangkat yang bisa menangani maksud itu, aplikasi Anda akan mogok.

Untuk memverifikasi adanya aktivitas yang bisa merespons maksud, panggil queryIntentActivities() untuk mengambil daftar aktivitas yang mampu menangani Intent Anda. Jika List yang dikembalikan tidak kosong, Anda bisa menggunakan maksud tersebut dengan aman. Misalnya:

PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent,
        PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;

Jika isIntentSafe berupa true, maka setidaknya ada satu aplikasi yang merespons maksud. Jika false, maka tidak ada aplikasi yang akan menangani maksud tersebut.

Catatan: Anda harus melakukan pemeriksaan ini bila aktivitas dimulai lebih dahulu jika Anda perlu menonaktifkan fitur yang menggunakan maksud sebelum pengguna berupaya menggunakannya. Jika Anda mengetahui aplikasi tertentu yang bisa menangani maksud, Anda juga bisa memberikan tautan bagi pengguna untuk mengunduh aplikasi itu (lihat cara menautkan ke produk Anda di Google Play).

Memulai Aktivitas dengan Maksud

Gambar 1.Contoh dialog pemilihan yang muncul bila ada lebih dari satu aplikasi yang bisa menangani maksud.

Setelah Anda membuat Intent dan menyetel info ekstra, panggil startActivity() untuk mengirimnya ke sistem. Jika sistem mengidentifikasi lebih dari satu aktivitas yang bisa menangani maksud, sebuah dialog akan ditampilkan kepada pengguna untuk memilih aplikasi yang akan digunakan, seperti yang ditampilkan dalam gambar 1. Bila hanya ada satu aktivitas yang menangani maksud, sistem akan segera memulainya.

startActivity(intent);

Inilah contoh lengkap yang menampilkan cara membuat maksud agar menampilkan peta, memverifikasikan adanya aplikasi yang akan menangani maksud itu, kemudian memulainya:

// Build the intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;

// Start an activity if it's safe
if (isIntentSafe) {
    startActivity(mapIntent);
}

Menampilkan Pemilih Aplikasi

Gambar 2. Dialog pemilih.

Perhatikan, bila memulai aktivitas dengan meneruskan Intent Anda ke startActivity() dan ada lebih dari satu aplikasi yang merespons maksud, pengguna bisa memilih aplikasi yang akan digunakan secara default (dengan memilih kotak centang di bagian bawah dialog; lihat gambar 1). Ini bagus saat melakukan aksi yang untuk itu biasanya pengguna ingin selalu menggunakan aplikasi yang sama, misalnya saat membuka laman web (pengguna cenderung menggunakan satu browser web saja) atau mengambil foto (pengguna cenderung menyukai satu kamera).

Akan tetapi, jika aksi yang akan dilakukan bisa ditangani oleh banyak aplikasi dan pengguna mungkin lebih menyukai aplikasi berbeda untuk setiap kalinya—misalnya aksi “berbagi”, bila pengguna mungkin memiliki beberapa aplikasi yang digunakan untuk berbagi suatu item—Anda harus menampilkan secara eksplisit sebuah dialog pemilih seperti yang ditampilkan dalam gambar 2. Dialog pemilih memaksa pengguna selalu memilih aplikasi yang akan digunakan untuk aksi (pengguna tidak bisa memilih aplikasi default untuk aksi itu).

Untuk menampilkan pemilih, buat Intent menggunakan createChooser() dan teruskan startActivity() padanya. Misalnya:

Intent intent = new Intent(Intent.ACTION_SEND);
...

// Always use string resources for UI text.
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show chooser
Intent chooser = Intent.createChooser(intent, title);

// Verify the intent will resolve to at least one activity
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

Ini menampilkan dialog berisi daftar aplikasi yang merespons maksud yang diteruskan ke metode createChooser() dan menggunakan teks yang disediakan sebagai judul dialog.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Ikuti Google Developers di WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)