Broadcast Penerima hanya menanggapi menyiarkan pesan dari aplikasi lain atau dari sistem itu sendiri. Pesan ini kadang-kadang disebut peristiwa atau maksud. Sebagai contoh, aplikasi juga dapat melakukan siaran untuk membiarkan aplikasi lain tahu bahwa beberapa data telah diunduh ke perangkat dan tersedia bagi mereka untuk menggunakan, jadi ini disiarkan penerima yang akan mencegat komunikasi ini dan akan melakukan tindakan yang tepat.
Ada dua langkah berikut penting untuk membuat BroadcastReceiver bekerja untuk sistem disiarkan maksud -
- Menciptakan Broadcast Receiver.
- Pendaftaran Broadcast Receiver
Ada satu langkah tambahan dalam kasus Anda akan menerapkan maksud kustom Anda maka Anda akan harus membuat dan menyiarkan mereka maksud.
Menciptakan Broadcast Receiver
Sebuah penerima siaran diimplementasikan sebagai subclass dari BroadcastReceiverclass dan menimpa onReceive () metode di mana setiap pesan yang diterima sebagai parameter objek Intent.
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); } }
Registering Broadcast Receiver
Aplikasi mendengarkan siaran maksud tertentu dengan mendaftarkan penerima siaran di AndroidManifest.xml berkas. Pertimbangkan kita akan registerMyReceiver untuk sistem yang dihasilkan acara ACTION_BOOT_COMPLETED yang ditembakkan oleh sistem setelah sistem Android telah menyelesaikan proses boot.
BROADCAST-RECEIVER
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"> </action> </intent-filter> </receiver> </application>
Sekarang setiap kali perangkat Android Anda akan boot, itu akan dicegat oleh BroadcastReceiver MyReceiver dan dilaksanakan logika dalam onReceive () akan dieksekusi.
Ada beberapa sistem yang dihasilkan peristiwa didefinisikan sebagai bidang static final di kelas theIntent. Tabel berikut berisi beberapa peristiwa penting sistem.
Event Constant | Description |
---|---|
android.intent.action.BATTERY_CHANGED | Siaran lengket mengandung negara, tingkat, dan informasi lainnya pengisian tentang baterai. |
android.intent.action.BATTERY_LOW | Menunjukkan kondisi baterai rendah pada perangkat. |
android.intent.action.BATTERY_OKAY | Menunjukkan baterai sekarang baik-baik saja setelah rendah. |
android.intent.action.BOOT_COMPLETED | Ini disiarkan sekali, setelah sistem selesai booting. |
android.intent.action.BUG_REPORT | Menunjukkan aktivitas untuk melaporkan bug. |
android.intent.action.CALL | Lakukan panggilan ke seseorang ditentukan oleh data. |
android.intent.action.CALL_BUTTON | Pengguna menekan "panggilan" tombol untuk pergi ke dialer atau UI lain yang sesuai untuk menempatkan panggilan. |
android.intent.action.DATE_CHANGED | Tanggal telah berubah. |
android.intent.action.REBOOT | Memiliki reboot perangkat. |
Broadcasting Custom Intents
Jika Anda ingin aplikasi Anda sendiri harus menghasilkan dan mengirim maksud kustom maka Anda akan harus membuat dan mengirim mereka maksud dengan menggunakan metode sendBroadcast () dalam kelas aktivitas Anda. Jika Anda menggunakan metode sendStickyBroadcast (Intent), Intent adalah lengket, berarti Intent Anda mengirim tetap sekitar setelah siaran selesai.
public void broadcastIntent(View view) { Intent intent = new Intent(); intent.setAction("com.tutorialspoint.CUSTOM_INTENT"); sendBroadcast(intent); }
Com.tutorialspoint.CUSTOM_INTENT niat ini juga dapat didaftarkan dengan cara yang sama seperti yang kita telah regsitered sistem yang dihasilkan niat.
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="MyReceiver"> <intent-filter> <action android:name="com.tutorialspoint.CUSTOM_INTENT"> </action> </intent-filter> </receiver> </application>
Example
Contoh ini akan menjelaskan cara membuat BroadcastReceiver untuk mencegat kustom niat. Setelah Anda sudah familiar dengan maksud kustom, maka Anda dapat memprogram aplikasi Anda untuk mencegat sistem yang dihasilkan maksud. Jadi mari kita ikuti langkah-langkah berikut untuk mengubah aplikasi Android kita buat di Hello World Contoh bab -
Step | Description |
---|---|
1 | Anda akan menggunakan Android studio untuk membuat aplikasi Android dan nama itu asMy Aplikasi berdasarkan paket com.example.My Aplikasi seperti yang dijelaskan dalam bab Hello World Contoh. |
2 | Memodifikasi file utama kegiatan MainActivity.java menambahkan broadcastIntent () metode. |
3 | Buat file java baru yang disebut MyReceiver.java bawah Aplikasi packagecom.example.My untuk mendefinisikan BroadcastReceiver a. |
4 | Sebuah aplikasi dapat menangani satu atau lebih kustom dan sistem maksud tanpa batasan. Setiap indent Anda ingin mencegat harus terdaftar dalam file AndroidManifest.xml Anda menggunakan <penerima ... /> tag |
5 | Memodifikasi konten default res file layout / / activity_main.xml untuk menyertakan tombol untuk menyiarkan maksud. |
6 | Tidak perlu memodifikasi file string, Android studio mengurus berkas string.xml. |
7 | Jalankan aplikasi untuk meluncurkan Android emulator dan memverifikasi hasil dari perubahan yang dilakukan dalam aplikasi. |
Berikut ini adalah isi dari dimodifikasi kegiatan utama filesrc / com.example.My Aplikasi / MainActivity.java. File ini dapat mencakup setiap metode siklus hidup yang mendasar. Kami telah menambahkan metode broadcastIntent () untuk menyiarkan maksud kustom.
package com.example.My Application; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.content.Intent; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } // broadcast a custom intent. public void broadcastIntent(View view){ Intent intent = new Intent(); intent.setAction("com.tutorialspoint.CUSTOM_INTENT"); sendBroadcast(intent); } }
Berikut ini adalah isi dari src / com.example.My Aplikasi / MyReceiver.java:
package com.example.My Application; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); } }
Berikut akan kandungan modifikasi dari AndroidManifest.xml berkas. Di sini kita telah menambahkan <layanan ... /> tag untuk menyertakan layanan kami:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.My Application" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <receiver android:name="MyReceiver"> <intent-filter> <action android:name="com.tutorialspoint.CUSTOM_INTENT"> </action> </intent-filter> </receiver> </application> </manifest>
Berikut akan menjadi isi dari res file layout / / activity_main.xml untuk menyertakan tombol untuk menyiarkan maksud kebiasaan kami -
<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="Example of Broadcast" 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_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/abc" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="Broadcast Intent" android:onClick="broadcastIntent" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> </RelativeLayout>
Berikut akan menjadi isi dari res / values / strings.xml untuk mendefinisikan dua konstanta baru -
<resources> <string name="menu_settings">Settings</string> <string name="title_activity_main">My Application</string> </resources>
Mari kita coba untuk menjalankan Hello kami dimodifikasi Dunia! aplikasi kita hanya dimodifikasi. Saya berasumsi bahwa Anda telah menciptakan AVD Anda saat melakukan lingkungan set-up. Untuk menjalankan aplikasi dari Android studio, buka salah satu file kegiatan proyek Anda dan klik Run
ikon dari tool bar. Android Studio menginstal aplikasi pada AVD Anda dan mulai itu dan jika semuanya baik-baik saja dengan Anda set-up dan aplikasi, maka akan muncul jendela berikut Emulator -
ikon dari tool bar. Android Studio menginstal aplikasi pada AVD Anda dan mulai itu dan jika semuanya baik-baik saja dengan Anda set-up dan aplikasi, maka akan muncul jendela berikut Emulator -
Sekarang untuk menyiarkan maksud kebiasaan kami, mari kita klik pada tombol Broadcast Intent, ini akan disiarkan niat kebiasaan kami "com.tutorialspoint.CUSTOM_INTENT" yang akan dicegat oleh kami terdaftar BroadcastReceiver yaitu MyReceiver dan sesuai logika kita menerapkan bersulang akan muncul di bagian bawah dari simulator sebagai berikut -
Anda dapat mencoba menerapkan BroadcastReceiver lain untuk mencegat sistem yang dihasilkan maksud seperti sistem boot, tanggal berubah, rendah baterai dll
Sumber:
www.tutorialspont.com
Tidak ada komentar:
Posting Komentar