Android - Maksud dan Filter
Android Intentadalah deskripsi abstrak dari suatu operasi yang akan dilakukan. Ini bisa digunakan denganstartActivity untuk meluncurkan sebuah Aktivitas, broadcastIntent untuk mengirimkannya ke komponen BroadcastReceiver yang tertarik, dan startService(Intent) atau bindService(Intent, ServiceConnection, int) untuk berkomunikasi dengan Layanan latar belakang.
The intent itself, an Intent object, is a passive data structure holding an abstract description of an operation to be performed.
Misalnya, anggaplah Anda memiliki Aktivitas yang perlu meluncurkan klien email dan mengirim email menggunakan perangkat Android Anda. Untuk tujuan ini, Aktivitas Anda akan mengirimkan ACTION_SEND bersama dengan yang sesuaichooser, ke Pemecah Maksud Android. Pemilih yang ditentukan memberikan antarmuka yang tepat bagi pengguna untuk memilih cara mengirim data email Anda.
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL, recipients);
email.putExtra(Intent.EXTRA_SUBJECT, subject.getText().toString());
email.putExtra(Intent.EXTRA_TEXT, body.getText().toString());
startActivity(Intent.createChooser(email, "Choose an email client from..."));
Sintaks di atas memanggil metode startActivity untuk memulai aktivitas email dan hasilnya harus seperti yang ditunjukkan di bawah ini -
Misalnya, anggaplah Anda memiliki Aktivitas yang perlu membuka URL di browser web pada perangkat Android Anda. Untuk tujuan ini, Aktivitas Anda akan mengirim Maksud ACTION_WEB_SEARCH ke Android Intent Resolver untuk membuka URL yang diberikan di browser web. Penyelesai Maksud mengurai daftar Aktivitas dan memilih salah satu yang paling cocok dengan Maksud Anda, dalam hal ini, Aktivitas Browser Web. Penyelesai Maksud lalu meneruskan halaman web Anda ke browser web dan memulai Aktivitas Browser Web.
String q = "tutorialspoint";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, q);
startActivity(intent);
Contoh di atas akan mencari sebagai tutorialspoint di mesin pencari android dan memberikan hasil tutorialspoint dalam aktivitas Anda
Ada mekanisme terpisah untuk mengirimkan maksud ke setiap jenis komponen - aktivitas, layanan, dan penerima siaran.
Sr Tidak | Metode & Deskripsi |
---|---|
1 |
Context.startActivity() Objek Intent diteruskan ke metode ini untuk meluncurkan aktivitas baru atau mendapatkan aktivitas yang sudah ada untuk melakukan sesuatu yang baru. |
2 |
Context.startService() Objek Intent diteruskan ke metode ini untuk memulai layanan atau mengirimkan instruksi baru ke layanan yang sedang berjalan. |
3 |
Context.sendBroadcast() Objek Intent diteruskan ke metode ini untuk mengirimkan pesan ke semua penerima siaran yang tertarik. |
Objek Maksud
Objek Intent adalah kumpulan informasi yang digunakan oleh komponen yang menerima maksud serta informasi yang digunakan oleh sistem Android.
Objek Intent bisa berisi komponen berikut berdasarkan apa yang dikomunikasikan atau akan dilakukannya -
Tindakan
Ini adalah bagian wajib dari objek Intent dan merupakan string yang menamai tindakan yang akan dilakukan - atau, dalam kasus maksud siaran, tindakan yang terjadi dan sedang dilaporkan. Tindakan sangat menentukan bagaimana struktur objek maksud lainnya. Kelas Intent mendefinisikan sejumlah konstanta tindakan yang sesuai dengan maksud yang berbeda. Berikut adalah daftar Android Intent Standard Actions
Tindakan dalam objek Intent bisa disetel dengan metode setAction () dan dibaca oleh getAction ().
Data
Menambahkan spesifikasi data ke filter maksud. Spesifikasi dapat berupa tipe data (atribut mimeType), hanya URI, atau tipe data dan URI. URI ditentukan oleh atribut terpisah untuk setiap bagiannya -
Atribut yang menentukan format URL ini bersifat opsional, tetapi juga saling bergantung -
- Jika skema tidak ditentukan untuk filter maksud, semua atribut URI lainnya akan diabaikan.
- Jika sebuah host tidak ditentukan untuk filter, atribut port dan semua atribut jalur diabaikan.
Metode setData () menetapkan data hanya sebagai URI, setType () menetapkannya hanya sebagai jenis MIME, dan setDataAndType () menetapkannya sebagai URI dan jenis MIME. URI dibaca oleh getData () dan tipe oleh getType ().
Beberapa contoh pasangan aksi / data adalah -
Sr.No. | Tindakan / Pasangan Data & Deskripsi |
---|---|
1 | ACTION_VIEW content://contacts/people/1 Menampilkan informasi tentang orang yang pengenalnya adalah "1". |
2 |
ACTION_DIAL content://contacts/people/1 Tampilkan dialer telepon dengan orang yang diisi. |
3 |
ACTION_VIEW tel:123 Tampilkan dialer telepon dengan nomor yang diberikan terisi. |
4 |
ACTION_DIAL tel:123 Tampilkan dialer telepon dengan nomor yang diberikan terisi. |
5 |
ACTION_EDIT content://contacts/people/1 Edit informasi tentang orang yang pengenalnya adalah "1". |
6 |
ACTION_VIEW content://contacts/people/ Menampilkan daftar orang yang dapat dijelajahi pengguna. |
7 |
ACTION_SET_WALLPAPER Tampilkan pengaturan untuk memilih wallpaper |
8 |
ACTION_SYNC Ini akan menyinkronkan data, Nilai Konstan android.intent.action.SYNC |
9 |
ACTION_SYSTEM_TUTORIAL Ini akan memulai tutorial yang ditentukan platform (Tutorial default atau tutorial memulai) |
10 |
ACTION_TIMEZONE_CHANGED Ini mengisyaratkan ketika zona waktu telah berubah |
11 |
ACTION_UNINSTALL_PACKAGE Ini digunakan untuk menjalankan uninstaller default |
Kategori
Kategori adalah bagian opsional dari objek Intent dan merupakan string yang berisi informasi tambahan tentang jenis komponen yang harus menangani maksud tersebut. Metode addCategory () menempatkan kategori dalam objek Intent, removeCategory () menghapus kategori yang sebelumnya ditambahkan, dan getCategories () mendapatkan set semua kategori yang saat ini ada di objek. Berikut adalah daftar Kategori Standar Maksud Android .
Anda dapat memeriksa detail pada Filter Maksud di bagian bawah untuk memahami bagaimana kami menggunakan kategori untuk memilih aktivitas yang sesuai dengan Intent.
Ekstra
Ini akan menjadi pasangan nilai-kunci untuk informasi tambahan yang harus dikirim ke komponen yang menangani maksud. Ekstra dapat disetel dan dibaca menggunakan metode putExtras () dan getExtras () masing-masing. Berikut adalah daftar Android Intent Standard Extra Data
Bendera
Bendera ini adalah bagian opsional dari objek Intent dan menginstruksikan sistem Android cara meluncurkan aktivitas, dan cara memperlakukannya setelah diluncurkan, dll.
Sr Tidak | Bendera & Deskripsi |
---|---|
1 |
FLAG_ACTIVITY_CLEAR_TASK Jika disetel dalam Intent yang diteruskan ke Context.startActivity (), tanda ini akan menyebabkan tugas apa pun yang sudah ada yang terkait dengan aktivitas dihapus sebelum aktivitas dimulai. Artinya, aktivitas menjadi root baru dari tugas yang dinyatakan kosong, dan aktivitas lama apa pun akan diselesaikan. Ini hanya dapat digunakan bersama dengan FLAG_ACTIVITY_NEW_TASK. |
2 |
FLAG_ACTIVITY_CLEAR_TOP Jika disetel, dan aktivitas yang diluncurkan sudah berjalan di tugas saat ini, alih-alih meluncurkan instance baru dari aktivitas itu, semua aktivitas lain di atasnya akan ditutup dan Intent ini akan dikirim ke (sekarang atas) aktivitas lama sebagai Maksud baru. |
3 |
FLAG_ACTIVITY_NEW_TASK Bendera ini umumnya digunakan oleh aktivitas yang ingin menampilkan perilaku gaya "peluncur": tanda ini memberi pengguna daftar hal-hal terpisah yang dapat dilakukan, yang jika tidak berjalan sepenuhnya secara independen dari aktivitas yang meluncurkannya. |
nama komponen
Bidang opsional ini adalah android ComponentNameobjek yang mewakili kelas Activity, Service atau BroadcastReceiver. Jika disetel, objek Intent akan dikirim ke instance kelas yang ditentukan, jika tidak, Android menggunakan informasi lain di objek Intent untuk menemukan target yang sesuai.
Nama komponen disetel oleh setComponent (), setClass (), atau setClassName () dan dibaca oleh getComponent ().
Jenis Maksud
Ada dua jenis maksud yang didukung oleh Android
Maksud Eksplisit
Intent eksplisit akan menghubungkan dunia internal aplikasi, misalkan jika Anda ingin menghubungkan satu aktivitas ke aktivitas lain, kita bisa melakukan kutipan ini dengan maksud eksplisit, gambar di bawah ini menghubungkan aktivitas pertama ke aktivitas kedua dengan mengklik tombol.
Maksud ini menunjuk komponen target dengan namanya dan biasanya digunakan untuk pesan internal aplikasi - seperti aktivitas yang memulai layanan bawahan atau meluncurkan aktivitas saudara. Misalnya -
// Explicit Intent by specifying its class name
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
// Starts TargetActivity
startActivity(i);
Maksud Implisit
Maksud ini tidak memberi nama target dan kolom untuk nama komponen dikosongkan. Maksud implisit sering digunakan untuk mengaktifkan komponen di aplikasi lain. Misalnya -
Intent read1=new Intent();
read1.setAction(android.content.Intent.ACTION_VIEW);
read1.setData(ContactsContract.Contacts.CONTENT_URI);
startActivity(read1);
Kode diatas akan memberikan hasil seperti gambar dibawah
Komponen target yang menerima maksud bisa menggunakan getExtras()metode untuk mendapatkan data tambahan yang dikirim oleh komponen sumber. Misalnya -
// Get bundle object at appropriate place in your code
Bundle extras = getIntent().getExtras();
// Extract data using passed keys
String value1 = extras.getString("Key1");
String value2 = extras.getString("Key2");
Contoh
Contoh berikut menunjukkan fungsionalitas Maksud Android untuk meluncurkan berbagai aplikasi bawaan Android.
Langkah | Deskripsi |
---|---|
1 | Anda akan menggunakan IDE studio Android untuk membuat aplikasi Android dan menamainya sebagai Aplikasi Saya di bawah paket com.example.saira_000.myapplication . |
2 | Ubah file src / main / java / MainActivity.java dan tambahkan kode untuk mendefinisikan dua pendengar yang sesuai dengan dua tombol, yaitu. Mulai Browser dan Mulai Telepon. |
3 | Ubah file XML tata letak res / layout / activity_main.xml untuk menambahkan tiga tombol dalam tata letak linier. |
4 | Jalankan aplikasi untuk meluncurkan emulator Android dan verifikasi hasil perubahan yang dilakukan dalam aplikasi. |
Berikut adalah konten file aktivitas utama yang dimodifikasi src/com.example.My Application/MainActivity.java.
package com.example.saira_000.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://www.example.com"));
startActivity(i);
}
});
b2=(Button)findViewById(R.id.button2);
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("tel:9510300000"));
startActivity(i);
}
});
}
}
Berikut akan menjadi konten res/layout/activity_main.xml file -
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intent Example"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/imageButton"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Browser"
android:id="@+id/button"
android:layout_alignTop="@+id/editText"
android:layout_alignRight="@+id/textView1"
android:layout_alignEnd="@+id/textView1"
android:layout_alignLeft="@+id/imageButton"
android:layout_alignStart="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Phone"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2" />
</RelativeLayout>
Berikut akan menjadi konten res/values/strings.xml untuk mendefinisikan dua konstanta baru -
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My Applicaiton</string>
</resources>
Berikut ini adalah konten default dari AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.saira_000.myapplication">
<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>
</activity>
</application>
</manifest>
Ayo coba jalankan file My Applicationaplikasi. Saya berasumsi bahwa Anda telah membuat fileAVDsaat melakukan pengaturan lingkungan. Untuk menjalankan aplikasi dari Android Studio, buka salah satu file aktivitas proyek Anda dan klik
Sekarang klik Start Browser tombol, yang akan memulai konfigurasi browser dan menampilkan http://www.example.com seperti yang ditunjukkan di bawah ini -
Cara serupa Anda dapat meluncurkan antarmuka telepon menggunakan tombol Mulai Telepon, yang memungkinkan Anda menghubungi nomor telepon yang sudah diberikan.
Filter Maksud
Anda telah melihat bagaimana suatu Maksud digunakan untuk memanggil aktivitas lain. OS Android menggunakan filter untuk menunjukkan kumpulan Aktivitas, Layanan, dan penerima Siaran yang bisa menangani Intent dengan bantuan kumpulan tindakan, kategori, skema data tertentu yang terkait dengan Intent. Anda akan menggunakan<intent-filter> elemen dalam file manifes untuk mencantumkan tindakan, kategori, dan tipe data yang terkait dengan aktivitas, layanan, atau penerima siaran apa pun.
Berikut adalah contoh bagian dari AndroidManifest.xml file untuk menentukan suatu aktivitas com.example.My Application.CustomActivity yang dapat dipanggil oleh salah satu dari dua tindakan yang disebutkan, satu kategori, dan satu data -
<activity android:name=".CustomActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="com.example.My Application.LAUNCH" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
Setelah aktivitas ini ditentukan bersama dengan filter yang disebutkan di atas, aktivitas lain akan dapat menjalankan aktivitas ini menggunakan android.intent.action.VIEW, atau menggunakan com.example.My Application.LAUNCH tindakan asalkan kategorinya android.intent.category.DEFAULT.
Itu <data> elemen menentukan tipe data yang diharapkan oleh aktivitas yang akan dipanggil dan untuk contoh di atas, aktivitas khusus kami mengharapkan data dimulai dengan "http: //"
Mungkin ada situasi di mana maksud bisa melewati filter lebih dari satu aktivitas atau layanan, pengguna mungkin ditanyai komponen mana yang akan diaktifkan. Pengecualian dimunculkan jika tidak ada target yang dapat ditemukan.
Ada tes pemeriksaan Android berikut sebelum menjalankan aktivitas -
Filter <intent-filter> mungkin mencantumkan lebih dari satu tindakan seperti yang ditunjukkan di atas tetapi daftar ini tidak boleh kosong; filter harus berisi setidaknya satu elemen <action>, jika tidak maka akan memblokir semua maksud. Jika lebih dari satu tindakan disebutkan, maka Android mencoba mencocokkan salah satu tindakan yang disebutkan sebelum menjalankan aktivitas.
Filter <intent-filter> mungkin mencantumkan nol, satu atau lebih dari satu kategori. jika tidak ada kategori yang disebutkan maka Android selalu lulus pengujian ini, tetapi jika lebih dari satu kategori disebutkan maka agar maksud lulus pengujian kategori, setiap kategori di objek Intent harus cocok dengan kategori di filter.
Setiap elemen <data> bisa menentukan URI dan tipe data (tipe media MIME). Ada atribut terpisah sepertischeme, host, port, dan pathuntuk setiap bagian URI. Objek Intent yang berisi URI dan tipe data akan meneruskan bagian tipe data dari pengujian hanya jika tipenya cocok dengan tipe yang tercantum dalam filter.
Contoh
Contoh berikut merupakan modifikasi dari contoh di atas. Di sini kita akan melihat bagaimana Android menyelesaikan konflik jika satu maksud memanggil dua aktivitas yang ditentukan dalam, selanjutnya cara memanggil aktivitas khusus menggunakan filter dan yang ketiga adalah kasus pengecualian jika Android tidak mengajukan aktivitas yang sesuai yang didefinisikan untuk maksud.
Langkah | Deskripsi |
---|---|
1 | Anda akan menggunakan studio android untuk membuat aplikasi Android dan menamainya sebagai Aplikasi Saya di bawah paket com.example.tutorialspoint7.myapplication; . |
2 | Ubah file src / Main / Java / MainActivity.java dan tambahkan kode untuk menentukan tiga pendengar yang sesuai dengan tiga tombol yang ditentukan dalam file layout. |
3 | Tambahkan file src / Main / Java / CustomActivity.java baru untuk memiliki satu aktivitas khusus yang akan dipanggil oleh maksud berbeda. |
4 | Ubah file XML tata letak res / layout / activity_main.xml untuk menambahkan tiga tombol dalam tata letak linier. |
5 | Tambahkan satu file XML layout res / layout / custom_view.xml untuk menambahkan <TextView> sederhana untuk menampilkan data yang diteruskan melalui maksud. |
6 | Ubah AndroidManifest.xml untuk menambahkan <intent-filter> guna menentukan aturan bagi maksud Anda untuk memanggil aktivitas kustom. |
7 | Jalankan aplikasi untuk meluncurkan emulator Android dan verifikasi hasil perubahan yang dilakukan dalam aplikasi. |
Berikut adalah konten file aktivitas utama yang dimodifikasi src/MainActivity.java.
package com.example.tutorialspoint7.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button b1,b2,b3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://www.example.com"));
startActivity(i);
}
});
b2 = (Button)findViewById(R.id.button2);
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent("com.example.
tutorialspoint7.myapplication.
LAUNCH",Uri.parse("http://www.example.com"));
startActivity(i);
}
});
b3 = (Button)findViewById(R.id.button3);
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent("com.example.
My Application.LAUNCH",
Uri.parse("https://www.example.com"));
startActivity(i);
}
});
}
}
Berikut adalah konten file aktivitas utama yang dimodifikasi src/com.example.My Application/CustomActivity.java.
package com.example.tutorialspoint7.myapplication;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
/**
* Created by TutorialsPoint7 on 8/23/2016.
*/
public class CustomActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_view);
TextView label = (TextView) findViewById(R.id.show_data);
Uri url = getIntent().getData();
label.setText(url.toString());
}
}
Berikut akan menjadi konten res/layout/activity_main.xml file -
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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.tutorialspoint7.myapplication.MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intent Example"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/imageButton"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Browser"
android:id="@+id/button"
android:layout_alignTop="@+id/editText"
android:layout_alignLeft="@+id/imageButton"
android:layout_alignStart="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start browsing with launch action"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_alignEnd="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exceptional condition"
android:id="@+id/button3"
android:layout_below="@+id/button2"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2"
android:layout_toStartOf="@+id/editText"
android:layout_alignParentEnd="true" />
</RelativeLayout>
Berikut akan menjadi konten res/layout/custom_view.xml file -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/show_data"
android:layout_width="fill_parent"
android:layout_height="400dp"/>
</LinearLayout>
Berikut akan menjadi konten res/values/strings.xml untuk mendefinisikan dua konstanta baru -
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My Application</string>
</resources>
Berikut ini adalah konten default dari AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint7.myapplication">
<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>
</activity>
<activity android:name="com.example.tutorialspoint7.myapplication.CustomActivity">
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<action android:name = "com.example.tutorialspoint7.myapplication.LAUNCH" />
<category android:name = "android.intent.category.DEFAULT" />
<data android:scheme = "http" />
</intent-filter>
</activity>
</application>
</manifest>
Ayo coba jalankan file My Applicationaplikasi. Saya berasumsi bahwa Anda telah membuat fileAVDsaat melakukan pengaturan lingkungan. Untuk menjalankan aplikasi dari Android Studio, buka salah satu file aktivitas proyek Anda dan klik
Sekarang mari kita mulai dengan tombol pertama "Mulai Browser dengan VIEW Action". Di sini kita telah mendefinisikan aktivitas khusus kita dengan filter "android.intent.action.VIEW", dan sudah ada satu aktivitas default terhadap tindakan VIEW yang ditentukan oleh Android yang meluncurkan browser web, Jadi android menampilkan dua opsi berikut untuk memilih aktivitas Anda ingin meluncurkan.
Sekarang jika Anda memilih Browser, maka Android akan meluncurkan browser web dan membuka situs web example.com tetapi jika Anda memilih opsi IndentDemo maka Android akan meluncurkan CustomActivity yang tidak melakukan apa-apa selain hanya menangkap data yang lewat dan menampilkan dalam tampilan teks sebagai berikut -
Sekarang kembali menggunakan tombol kembali dan klik tombol "Mulai Browser dengan LUNCURKAN Tindakan", di sini Android menerapkan filter untuk memilih tentukan aktivitas dan cukup meluncurkan aktivitas khusus Anda
Sekali lagi, kembali menggunakan tombol kembali dan klik tombol "Kondisi Pengecualian", di sini Android mencoba menemukan filter yang valid untuk maksud yang diberikan tetapi tidak menemukan aktivitas valid yang ditentukan karena saat ini kami telah menggunakan data sebagai https dari pada http meskipun kami memberikan tindakan yang benar, jadi Android memunculkan pengecualian dan menampilkan layar berikut -