Home

Android - Broadcast Receivers



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

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 ConstantDescription
android.intent.action.BATTERY_CHANGEDSiaran lengket mengandung negara, tingkat, dan informasi lainnya pengisian tentang baterai.
android.intent.action.BATTERY_LOWMenunjukkan kondisi baterai rendah pada perangkat.
android.intent.action.BATTERY_OKAYMenunjukkan baterai sekarang baik-baik saja setelah rendah.
android.intent.action.BOOT_COMPLETEDIni disiarkan sekali, setelah sistem selesai booting.
android.intent.action.BUG_REPORTMenunjukkan aktivitas untuk melaporkan bug.
android.intent.action.CALLLakukan panggilan ke seseorang ditentukan oleh data.
android.intent.action.CALL_BUTTONPengguna menekan "panggilan" tombol untuk pergi ke dialer atau UI lain yang sesuai untuk menempatkan panggilan.
android.intent.action.DATE_CHANGEDTanggal telah berubah.
android.intent.action.REBOOTMemiliki 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 -
StepDescription
1Anda 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.
2Memodifikasi file utama kegiatan MainActivity.java menambahkan broadcastIntent () metode.
3Buat file java baru yang disebut MyReceiver.java bawah Aplikasi packagecom.example.My untuk mendefinisikan BroadcastReceiver a.
4Sebuah 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
5Memodifikasi konten default res file layout / / activity_main.xml untuk menyertakan tombol untuk menyiarkan maksud.
6Tidak perlu memodifikasi file string, Android studio mengurus berkas string.xml.
7Jalankan 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
Eclipse Run Iconikon 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 -
Android Broadcast Demo
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 -
Android Broadcast Intent
Anda dapat mencoba menerapkan BroadcastReceiver lain untuk mencegat sistem yang dihasilkan maksud seperti sistem boot, tanggal berubah, rendah baterai dll
Sumber:
www.tutorialspont.com

Unknown

Tempat Tutorial coding dan contoh-contoh aplikasi baik itu php,mysql,android,java, dan html.

Tidak ada komentar:

Posting Komentar