2.3: Memulai Aktivitas dengan Intent Implisit

Daftar Isi:

Dalam bagian sebelumnya Anda belajar tentang intent eksplist -- mengaktifkan aktivitas spesifik dalam aplikasi Anda atau aplikasi berbeda dengan mengirimkan intent dengan nama kelas mutlak dari aktivitas tersebut. Dalam bagian ini Anda akan mempelajari selengkapnya tentang intent implisit dan cara menggunakannya untuk mengaktifkan aktivitas juga.

Intent implisit memungkinkan Anda untuk mengaktifkan aktivitas jika tahu tindakannya, tetapi tidak tahu aplikasi spesifik atau aktivitas yang akan menangani tindakan tersebut. Contohnya, jika Anda ingin aplikasi mengambil foto, atau mengirim email, atau menampilkan lokasi pada peta, Anda biasanya tidak peduli aplikasi atau aktivitas spesifik mana yang melakukan tindakan ini.

Sebaliknya, aktivitas Anda dapat mendeklarasikan satu atau beberapa filter intent dalam manifes Android yang mengiklankan kemampuan aktivitas tersebut untuk menerima intent implisit dan mendefinisikan tipe intent tertentu yang akan diterimanya.

Untuk mencocokkan permintaan Anda dengan aplikasi spesifik yang dipasang pada perangkat, sistem Android mencocokkan intent implisit dengan aktivitas yang filter intent-nya menandakan bahwa intent itu dapat melakukan tindakan tersebut. Jika ada beberapa aplikasi terpasang yang cocok, pengguna akan diberikan pemilih aplikasi yang akan mengizinkan pengguna memilih aplikasi mana yang ingin digunakan untuk menangani intent tersebut.

Dalam praktik ini Anda akan membangun aplikasi yang mengirimkan tiga intent implisit untuk membuka URL pada browser web, untuk membuka lokasi pada peta dan membagikan sedikit teks. Berbagi -- mengirim informasi ke orang lain melalui email atau media sosial -- adalah fitur umum dan populer pada banyak aplikasi. Untuk tindakan berbagi kami menggunakan kelas ShareCompat.IntentBuilder, yang memudahkan pembangunan intent untuk membagikan data.

Akhirnya, kami membuat aplikasi penerima intent sederhana yang menerima intent implisit untuk tindakan yang spesifik.

Yang harus sudah Anda KETAHUI

Dari praktik sebelumnya, Anda harus sudah bisa:

  • Membuat dan menggunakan aktivitas.
  • Membuat dan mengirim intent di antara aktivitas.

Yang akan Anda PELAJARI

Anda akan belajar:

  • Membuat intent implisit dan menggunakan tindakan dan kategorinya.
  • Menggunakan kelas pembantu ShareCompat.IntentBuilder untuk membuat intent implisit agar dapat membagikan data dengan mudah.
  • Iklankan bahwa aplikasi Anda dapat menerima intent implisit dengan mendeklarasikan filter intent dalam manifes Android.

Yang akan Anda LAKUKAN

Dalam praktik ini Anda akan:

  • Membuat aplikasi baru untuk mengirimkan intent implisit.
  • Mengimplementasikan dua intent implisit yang membuka halaman web dan membuka lokasi pada peta.
  • Mengimplementasikan tindakan untuk membagikan cuplikan teks.
  • Membuat aplikasi baru yang dapat menerima intent implisit untuk membuka laman web.

Ringkasan Aplikasi

Dalam bagian ini Anda akan membuat aplikasi baru dengan satu aktivitas dan tiga opsi untuk tindakan ini: membuka situs web, membuka lokasi pada peta, dan membagikan cuplikan teks. Semua bidang teks dapat diedit (EditText), tetapi berisi nilai default. Pratinjau Aplikasi Implicit Intents

Tugas 1. Membuat proyek dan layout baru

Untuk latihan ini, Anda akan membuat proyek baru dan aplikasi bernama Implicit Intents dengan layout baru.

1.1 Membuat proyek

  1. Mulai Android Studio dan buat proyek Android Studio baru. Panggil "Implicit Intents" aplikasi.
  2. Pilih Empty Activity untuk template proyek. Klik Next.
  3. Terima nama aktivitas default (MainActivity). Pastikan kotak Generate Layout file dicentang. Klik Finish.

1.2 Membuat Layout

Dalam tugas ini, buat layout untuk aplikasi. Gunakan LinearLayout, tiga Tombol, dan tiga EditText, seperti ini: Elemen Layout untuk Aplikasi Implicit Intents

  1. Edit res/values/strings.xml untuk menyertakan sumber daya string ini:

    <string name="edittext_uri">http://developer.android.com</string>
    <string name="button_uri">Open Website</string>
    
    <string name="edittext_loc">Golden Gate Bridge</string>
    <string name="button_loc">Open Location</string>
    
    <string name="edittext_share">\'Twas brillig and the slithy toves</string>
    <string name="button_share">Share This Text</string>
    
  2. Ubah RelativeLayout default ke LinearLayout. Tambahkan atribut android:orientation dan berikan nilai "vertical."
    <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.MainActivity"
        android:orientation="vertical">
    
  3. Hapus TextView "Hello World".
  4. Tambahkan EditText dan Tombol ke layout untuk fungsi Buka Situs web. Gunakan nilai atribut ini:

    Atribut (EditText) Nilai (EditText)
    android:id "@+id/website_edittext"
    android:layout_width "match_parent"
    android:layout_height "wrap_content"
    android:text "@string/edittext_uri"
    Atribut (Tombol) Nilai (Tombol)
    android:id "@+id/open_website_button"
    android:layout_width "wrap_content"
    android:layout_height "wrap_content"
    android:layout_marginBottom "24dp"
    android:text "@string/button_uri"
    android:onClick "openWebsite"
  5. Tambahkan EditText kedua dan Tombol ke layout untuk fungsi Open Website.
  6. Gunakan atribut yang sama dengan atribut pada langkah sebelumnya. Namun, modifikasi atribut seperti yang di bawah ini:

    Atribut (EditText) Nilai (EditText)
    android:id "@+id/location_edittext"
    android:text "@string/edittext_loc"
    Atribut (Tombol) Nilai (Tombol)
    android:id "@+id/open_location_button"
    android:text "@string/button_loc"
    android:onClick "openLocation"
  7. Tambahkan EditText ketiga dan Tombol untuk fungsi Share This. Buatlah perubahan ini:

    Atribut (EditText) Nilai (EditText)
    android:id "@+id/share_edittext"
    android:text "@string/edittext_share"
    Atribut (Tombol) Nilai (Tombol)
    android:id "@+id/share_text_button"
    android:text "@string/button_share"
    android:onClick "shareText"

Kode Solusi:

<?xml version="1.0" encoding="utf-8"?>
<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.MainActivity"
   android:orientation="vertical">

   <EditText
       android:id="@+id/website_edittext"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@string/edittext_uri" />

   <Button
       android:id="@+id/open_website_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginBottom="24dp"
       android:onClick="openWebsite"
       android:text="@string/button_uri" />

   <EditText
       android:id="@+id/location_edittext"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@string/edittext_loc" />

   <Button
       android:id="@+id/open_location_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginBottom="24dp"
       android:onClick="openLocation"
       android:text="@string/button_loc" />

   <EditText
       android:id="@+id/share_edittext"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@string/edittext_share" />

   <Button
       android:id="@+id/share_text_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginBottom="24dp"
       android:onClick="shareText"
       android:text="@string/button_share" />
</LinearLayout>

Tugas 2. Mengimplementasikan "buka situs web"

Dalam tugas ini Anda akan mengimplementasikan metode handler on-click untuk tombol pertama dalam layout ("Open Website.") Tindakan ini menggunakan intent implisit untuk mengirimkan URI yang diberikan ke aktivitas yang dapat menangani intent implisit tersebut (seperti browser web).

2.1 Mendefinisikan metode openWebsite

  1. Buka MainActivity.java.
  2. Tambahkan variabel privat di bagian atas kelas untuk menampung objek EditText untuk URI situs web.
    private EditText mWebsiteEditText;
    
  3. Dalam metode onCreate(), gunakan findViewByID() untuk mendapatkan referensi tentang instance EditText dan menetapkannya ke variabel privat tersebut:
    mWebsiteEditText = (EditText) findViewById(R.id.website_edittext);
    
  4. Buat metode baru bernama openWebsite(), dengan tanda tangan ini:
    public void openWebsite(View view) { }
    
  5. Dapatkan nilai string EditText:
    String url = mWebsiteEditText.getText().toString();
    
  6. Enkode dan parse string ke dalam objek Uri:
    Uri webpage = Uri.parse(url);
    
  7. Buat intent baru dengan Intent.ACTION_VIEW sebagai tindakan dan URI sebagai data:

    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    

    Konstruktor intent ini berbeda dari yang Anda gunakan untuk membuat intent eksplisit. Dalam konstruktor sebelumnya, Anda menetapkan konteks saat ini dan komponen spesifik (kelas aktivitas) untuk mengirim intent. Dalam konstruktor ini Anda menetapkan tindakan dan data untuk tindakan tersebut. Tindakan didefinisikan oleh kelas intent dan dapat menyertakan ACTION_VIEW (untuk melihat data yang diberikan), ACTION_EDIT (untuk mengedit data yang diberikan), atau ACTION_DIAL (untuk menghubungi nomor telepon). Dalam hal ini, tindakan adalah ACTION_VIEW karena kita ingin membuka dan melihat laman web yang ditetapkan oleh URI dalam variabel laman web.

  8. Gunakan resolveActivity() dan pengelola paket Android untuk menemukan aktivitas yang dapat menangani intent implisit. Periksa untuk memastikan permintaan berhasil diatasi.

    if (intent.resolveActivity(getPackageManager()) != null) {
    }
    

    Permintaan yang cocok dengan tindakan intent dan data dengan intent Anda ini memfilter aplikasi yang dipasang pada perangkat untuk memastikan paling tidak ada satu aktivitas yang bisa menangani permintaan Anda.

  9. Dalam pernyataan if, panggil startActivity() untuk mengirimkan intent.
    startActivity(intent);
    
  10. Tambahkan blok else untuk mencetak pesan log jika intent tidak bisa diatasi.
    } else {
       Log.d("ImplicitIntents", "Can't handle this!");
    }
    

Kode Solusi (bukan seluruh kelas):

public void openWebsite(View view) {
   // Get the URL text.
   String url = mWebsiteEditText.getText().toString();

   // Parse the URI and create the intent.
   Uri webpage = Uri.parse(url);
   Intent intent = new Intent(Intent.ACTION_VIEW, webpage);

   // Find an activity to hand the intent and start that activity.
   if (intent.resolveActivity(getPackageManager()) != null) {
       startActivity(intent);
   } else {
       Log.d("ImplicitIntents", "Can't handle this intent!");
   }
}

Tugas 3. Mengimplementasikan "buka lokasi"

Dalam tugas ini, Anda akan mengimplementasikan metode handler on-click untuk tombol kedua dalam UI("Open Location.") Metode ini hampir identik dengan metode openWebsite(). Perbedaannya adalah penggunaan URI geo untuk menunjukkan lokasi peta. Anda bisa menggunakan URI geo dengan lintang dan bujur, atau gunakan string kueri untuk lokasi umum. Dalam contoh ini kami telah menggunakannya untuk tujuan yang kedua.

3.1 Definisikan metode openLocation

  1. Buka MainActivity.java (java/com.example.android.implicitintents/MainActivity).
  2. Tambahkan variabel privat di bagian atas kelas untuk menampung objek EditText bagi URI lokasi.
    private EditText mLocationEditText;
    
  3. Dalam metode onCreate(), gunakan findViewByID() untuk mendapatkan referensi tentang contoh EditText dan menetapkannya ke variabel privat tersebut:
    mLocationEditText = (EditText) findViewById(R.id.location_edittext);
    
  4. Membuat metode baru bernama openLocation untuk digunakan sebagai metode onClick untuk tombol Open Location. Gunakan tanda tangan metode yang sama sebagai openWebsite().
  5. Dapatkan nilai string EditText mLocationEditText.
    String loc = mLocationEditText.getText().toString();
    
  6. Parse string itu ke dalam objek Uri dengan kueri penelusuran geo:
    Uri addressUri = Uri.parse("geo:0,0?q=" + loc);
    
  7. Buat intent baru dengan Intent.ACTION_VIEW sebagai tindakan dan loc sebagai datanya.
    Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
    
  8. Pecahkan intent dan periksa untuk memastikan intent berhasil diatasi. Jika demikian, startActivity(), jika tidak catat log pesan kesalahan.
    if (intent.resolveActivity(getPackageManager()) != null) {
       startActivity(intent);
    } else {
       Log.d("ImplicitIntents", "Can't handle this intent!");
    }
    

Kode Solusi (bukan seluruh kelas):

public void openLocation(View view) {
   // Get the string indicating a location. Input is not validated; it is
   // passed to the location handler intact.
   String loc = mLocationEditText.getText().toString();

   // Parse the location and create the intent.
   Uri addressUri = Uri.parse("geo:0,0?q=" + loc);
   Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);

   // Find an activity to handle the intent, and start that activity.
   if (intent.resolveActivity(getPackageManager()) != null) {
       startActivity(intent);
   } else {
       Log.d("ImplicitIntents", "Can't handle this intent!");
   }
}

Tugas 4. Mengimplementasikan bagikan teks ini

Tindakan berbagi adalah cara mudah bagi pengguna untuk berbagi item dalam aplikasi Anda dengan jaringan sosial dan aplikasi lain. Walaupun Anda bisa membangun tindakan berbagi dalam aplikasi Anda sendiri menggunakan intent implisit, Android menyediakan kelas pembantu ShareCompat.IntentBuilder untuk memudahkan implementasi berbagi. Anda bisa menggunakan ShareCompat.IntentBuilder untuk membangun intent dan meluncurkan pemilih untuk memungkinkan pengguna memilih aplikasi tujuan untuk berbagi.

Dalam tugas terakhir ini, kita akan mengimplementasikan sedikit teks dalam text edit dengan kelas ShareCompat.IntentBuilder.

4.1 Mengimplementasikan metode shareText

  1. Buka MainActivity.java.
  2. Tambahkan variabel privat di bagian atas kelas untuk menampung objek EditText untuk URI situs web.
    private EditText mShareTextEditText;
    
  3. Dalam metode onCreate(), gunakan findViewByID() untuk mendapatkan referensi tentang instance EditText dan menetapkannya ke variabel privat tersebut:
    mShareTextEditText = (EditText) findViewById(R.id.share_edittext);
    
  4. Membuat metode baru bernama shareThis() untuk digunakan sebagai metode onClick untuk tombol This Text. Gunakan tanda tangan metode yang sama sebagai openWebsite().
  5. Dapatkan nilai string EditText mShareTextEditText.
    String txt = mShareTextEditText.getText().toString();
    
  6. Definisikan tipe mime teks untuk dibagikan:
    String mimeType = "text/plain";
    
  7. Panggil ShareCompat.IntentBuilder dengan metode ini:

    ShareCompat.IntentBuilder
           .from(this)
           .setType(mimeType)
           .setChooserTitle("Share this text with: ")
           .setText(txt)
           .startChooser();
    

    Panggilan ke hareCompat.IntentBuilder ini menggunakan metode berikut:

    </tr> </table> Format ini, dengan semua metode setter builder dirangkai dalam satu pernyataan, adalah cara shorthand mudah untuk membuat dan meluncurkan intent. Anda bisa menambahkan metode tambahan apa pun ke daftar ini.

    Metode Keterangan
    from() Aktivitas yang meluncurkan intent berbagi (ini).
    setType() Tipe MIME item yang akan dibagikan.
    setChooserTitle() Judul yang muncul pada pemilih aplikasi sistem.
    setText() Teks sebenarnya yang akan dibagikan
    startChooser() Tunjukkan pemilih aplikasi sistem dan kirimkan intent.

Kode Solusi (bukan seluruh kelas):

public void shareText(View view) {
    String txt = mShareTextEditText.getText().toString();
    String mimeType = "text/plain";

    ShareCompat.IntentBuilder
            .from(this)
            .setType(mimeType)
            .setChooserTitle("Share this text with: ")
            .setText(txt)
            .startChooser();
}

Tugas 5. Menerima Intent Implisit

Sejauh ini, Anda sudah membuat aplikasi yang menggunakan intent eksplisit dan implisit untuk membuka beberapa aktivitas aplikasi lainnya. Dalam tugas ini kita akan melihat masalah dari sudut pandang sebaliknya: mengizinkan aktivitas dalam aplikasi untuk merespons intent implisit yang dikirim dari aplikasi lain.

Aktivitas dalam aplikasi Anda selalu bisa diaktifkan dari dalam atau luar aplikasi dengan intent eksplisit. Untuk mengizinkan aktivitas menerima intent implisit, definisikan filter intent dalam manifes Anda untuk menandakan intent implisit mana yang akan ditangani oleh aktivitas.

Untuk mencocokkan permintaan Anda dengan aplikasi spesifik yang dipasang pada perangkat, sistem Android mencocokkan intent implisit dengan aktivitas yang filter intent-nya menandakan bahwa intent itu dapat melakukan tindakan tersebut. Jika ada beberapa aplikasi terpasang yang cocok, pengguna akan diberikan pemilih aplikasi yang akan mengizinkan pengguna memilih aplikasi mana yang ingin digunakan untuk menangani intent tersebut.

Saat aplikasi pada perangkat mengirimkan intent implisit, sistem Android mencocokkan tindakan dan data intent tersebut dengan aktivitas yang tersedia, termasuk filter intent yang benar. Jika filter intent aktivitas cocok dengan intent, aktivitas dapat menangani intent itu sendiri (jika itu satu-satunya aktivitas yang cocok), atau (jika ada beberapa yang cocok) sebuah pemilih aplikasi akan muncul dan mengizinkan pengguna memilih aplikasi mana yang mereka inginkan untuk melakukan tindakan itu.

Dalam tugas ini Anda akan membuat aplikasi sangat sederhana yang menerima intent implisit untuk membuka URI untuk laman web. Saat diaktifkan oleh intent implisit, aplikasi itu menampilkan URI yang diminta sebagai string dalam TextView.

5.1 Membuat Proyek & Layout

  1. Mulai Android Studio dan buat proyek Android Studio baru.
  2. Panggil "Penerima Intent Implisit" aplikasi Anda.
  3. Pilih Empty Activity untuk template proyek.
  4. Terima nama aktivitas default (MainActivity). Klik Berikutnya.
  5. Pastikan kotak Generate Layout file dicentang. Klik Finish.
  6. Buka res/layout/activity_main.xml.
  7. Ubah TextView ("Hello World") yang sudah ada dengan atribut berikut:

    Atribut Nilai
    android:id "@+id/text_uri_message"
    android:layout_width wrap_content
    android:layout_height wrap_content
    android:textSize "18sp"
    android:textStyle "bold"
  8. Hapus atribut android:text. Tidak ada teks dalam TextView ini secara default, Anda akan menambahkan URI dari intent dalam onCreate().

5.2 Memodifikasi Manifes Android untuk menambahkan filter intent

  1. Buka manifests/AndroidManifest.xml.
  2. Perhatikan bahwa aktivitas utama telah memiliki filter intent ini:

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

    Filter intent ini, yang merupakan bagian dari manifes proyek default, menunjukkan bahwa aktivitas ini adalah titik masuk utama untuk aplikasi Anda (filter ini memiliki tindakan intent "android.intent.action.MAIN"), dan bahwa aktivitas ini seharusnya muncul sebagai item level teratas dalam peluncur (kategorinya adalah "android.intent.category.LAUNCHER")

  3. Tambahkan <intent-filter> tag inside <activity>, dan sertakan elemen-elemen berikut ini:

    <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" />
    

    Baris ini mendefinisikan filter intent untuk aktivitas tersebut, jenis intent yang dapat ditangani aktivitas. Filter intent mendeklarasikan elemen berikut:

    Jenis Filter Nilai Kecocokan
    tindakan "android.intent.action.VIEW" Semua intent dengan tindakan tampilan.
    kategori "android.intent.category.DEFAULT" Semua intent implisit. Kategori ini harus disertakan agar aktivitas Anda menerima intent implisit apa pun.
    kategori "android.intent.category.BROWSABLE" Permintaan untuk tautan yang dapat dijelajahi dari laman web, email, atau sumber lainnya.
    data android:scheme="http" android:host="developer.android.com" URI yang berisi skema http DAN hostname dari developer.android.com.

    Catat bahwa filter (https://developer.android.com/guide/topics/manifest/data-element.html) [data] memiliki batasan untuk jenis tautan yang akan diterima dan hostname untuk URI tersebut. Jika Anda memilih agar penerima dapat menerima tautan apa pun, Anda bisa meninggalkan <data> elemen semuanya.

Kode Solusi:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.android.implicitintentsreceiver">

   <application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       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>
</manifest>

5.3 Memproses Intent

Dalam metode onCreate() untuk aktivitas, Anda memproses intent yang masuk untuk data atau ekstra yang disertakan. Dalam hal ini, intent implisit yang masuk memiliki URI yang disimpan dalam data intent.

  1. Buka MainActivity.java.
  2. Dalam metode onCreate(), dapatkan intent yang datang dan digunakan untuk mengaktifkan aktivitas tersebut:
    Intent intent = getIntent();
    
  3. Dapatkan data intent. Data intent selalu objek URI:
    Uri uri = intent.getData();
    
  4. Periksa untuk memastikan variabel uri tidak null. Jika pemeriksaan lulus, buat string dari objek URI:
    if (uri != null) {
       String uri_string = "URI: " + uri.toString();
    }
    
  5. Di dalam blok if yang sama, dapatkan tampilan teks untuk pesannya:
    TextView textView = (TextView) findViewById(R.id.text_uri_message);
    
  6. Juga di dalam blok if, setel teks TextView itu ke URI:
    textView.setText(uri_string);
    
  7. Jalankan aplikasi penerima.

    Menjalankan aplikasi itu sendiri menunjukkan aktivitas kosong tanpa teks. Ini karena aktivitas diaktifkan dari peluncur sistem, dan tidak dengan intent dari aplikasi lain.

  8. Jalankan aplikasi ImplicitIntents, dan klik Open Website dengan URI default.

    Pemilih aplikasi muncul menanyakan apakah Anda ingin menggunakan browser default atau aplikasi ImplicitIntentsReceiver. Pilih "Just Once" untuk aplikasi penerima. Aplikasi ImplicitIntentsReceiver terbuka dan pesan menunjukkan URI dari permintaan yang asli.

  9. Tap tombol kembali dan masukkan URI yang berbeda. Klik Open Website.

    Aplikasi penerima memiliki filter intent yang hanya cocok dengan protokol URI yang sama persis (http) and host (developer.android.com). URI lainnya terbuka pada browser web default.

Kode Solusi

Proyek Android Studio: ImplicitIntents

Tantangan penyusunan kode

Catatan:Semua tantangan penyusunan kode opsional dan bukan prasyarat untuk pelajaran berikutnya.

Tantangan: Dalam tantangan bagian terakhir Anda membuat builder aplikasi daftar belanja dengan dua aktivitas: satu untuk menampilkan daftar dan yang satu lagi untuk memilih item. Tambahkan EditText dan Tombol ke aktivitas daftar belanja untuk menemukan toko tertentu di peta.

Rangkuman

  • Intent implisit memungkinkan Anda untuk mengaktifkan aktivitas jika tahu tindakannya, tetapi tidak tahu aplikasi spesifik atau aktivitas yang akan menangani tindakan tersebut.
  • Aktivitas yang dapat menerima intent implisit harus mendefinisikan filter intent dalam manifes Android yang cocok dengan satu atau beberapa tindakan intent dan kategori.
  • Sistem Android cocok dengan konten intent implisit dan filter intent semua aktivitas yang tersedia untuk menentukan aktivitas mana yang akan diaktifkan. Jika ada lebih dari satu aktivitas yang tersedia, sistem menyediakan pemilih agar pengguna dapat memilih salah satunya.
  • Kelas ShareCompat.IntentBuilder memudahkan pembuatan intent implisit untuk berbagi data ke media sosial atau email.

Konsep terkait

Dokumentasi konsep terkait ada di Dasar-Dasar Developer Android: Konsep.

Ketahui Selengkapnya

results matching ""

    No results matching ""