ก่อนเข้าสู่ตัวอย่างเราควรรู้ว่า Intent filter ใน Android คืออะไร ตัวกรองเจตนาคืออินสแตนซ์ของคลาส IntentFilter ตัวกรอง Intent มีประโยชน์ในขณะที่ใช้ Intent โดยนัย มันจะไม่จัดการในโค้ดจาวา เราต้องตั้งค่าใน AndroidManifest.xml Android ต้องรู้ว่ามันเปิดตัวเจตนาแบบใด ดังนั้นตัวกรองเจตนาให้ข้อมูลแก่ Android เกี่ยวกับความตั้งใจและการกระทำ
ก่อนเปิดตัวเจตนา Android จะทดสอบการทดสอบการกระทำ การทดสอบหมวดหมู่ และการทดสอบข้อมูล ตัวอย่างนี้สาธิตวิธีใช้ตัวกรองความตั้งใจที่กำหนดเองกับเครื่องรับส่งสัญญาณใน Android
ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่
ขั้นตอนที่ 2 − เพิ่มโค้ดต่อไปนี้ใน res/layout/activity_main.xml
<ปุ่ม android:id="@+id/buton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" ปุ่มลงทะเบียนตัวกรองเจตนา" /> <ปุ่ม android:id="@+id/buton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="send Data" /> ก่อน>ในโค้ดด้านบนนี้ เรามีปุ่มสองปุ่ม ปุ่มแรกใช้สำหรับลงทะเบียนความตั้งใจ และอีกปุ่มสำหรับส่งข้อมูลเพื่อออกอากาศ
แพ็คเกจ com.example.andy.myapplication;นำเข้า android.content.BroadcastReceiver;นำเข้า android.content.Context;นำเข้า android.content.Intent;นำเข้า android.content.IntentFilter;นำเข้า android.os.Bundle;นำเข้า android support.v7.app.AppCompatActivity นำเข้า android.util.Log นำเข้า android.view.View นำเข้า android.widget.Button นำเข้า android.widget.RadioButton นำเข้า android.widget.Toast คลาสสาธารณะ MainActivity ขยาย AppCompatActivity { RadioButton ปุ่มวิทยุ; @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); ปุ่มปุ่มสุดท้าย =findViewById(R.id.buton); ปุ่มสุดท้ายส่ง =findViewById(R.id.buton1); send.setOnClickListener (View.OnClickListener ใหม่ () { @แทนที่โมฆะสาธารณะ onClick (ดู v) { เจตนาเจตนา =เจตนาใหม่ ("com.example.andy.CUSTOM_INTENT"); sendBroadcast (เจตนา); } }); button.setOnClickListener (View.OnClickListener ใหม่ () { @แทนที่โมฆะสาธารณะ onClick (ดู v) { registerReceiver (mMessageReceiver, IntentFilter ใหม่ ("com.example.andy.CUSTOM_INTENT")); } }); } BroadcastReceiver ส่วนตัว mMessageReceiver =BroadcastReceiver ใหม่ () { @Override public void onReceive (บริบทบริบท เจตนาเจตนา) {// ดึงข้อมูลที่รวมอยู่ในข้อความ Intent String =Intent.getAction (); Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show(); } }; @Override ป้องกันโมฆะ onPause () { super.onPause (); unregisterReceiver(mMessageReceiver); }}เมื่อคุณคลิกที่ปุ่ม มันจะลงทะเบียนผู้รับโดยใช้การดำเนินการออกอากาศแบบกำหนดเองดังที่แสดงด้านล่าง -
registerReceiver(mMessageReceiver,IntentFilter ใหม่("com.example.andy.CUSTOM_INTENT"));มันเป็นตัวรับการออกอากาศแบบไดนามิก ดังนั้นเราควรยกเลิกการลงทะเบียน onPause() ดังที่แสดงด้านล่าง-
unregisterReceiver(mMessageReceiver);มีอีกปุ่มหนึ่งสำหรับส่งบรอดคาสต์ มันจะส่งการกระทำและข้อมูลไปลงทะเบียนผู้รับตามที่แสดงด้านล่าง -
เจตนาเจตนา=เจตนาใหม่("com.example.andy.CUSTOM_INTENT");sendBroadcast(intent);เป็น Dynamic Broadcast Register ดังนั้นเราจึงไม่จำเป็นต้องสร้างไฟล์ตัวรับใหม่สำหรับตัวรับการออกอากาศ ดังนั้นเราจึงประกาศตัวรับการออกอากาศในกิจกรรมเดียวกันดังที่แสดงด้านล่าง -
BroadcastReceiver ส่วนตัว mMessageReceiver =BroadcastReceiver ใหม่ () { @Override public void onReceive (บริบทบริบท เจตนาเจตนา) {// ดึงข้อมูลที่รวมอยู่ในข้อความ Intent String =Intent.getAction (); Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show(); }};ในโค้ดด้านบนจะใช้ข้อมูลจากเจตนาเป็นการกระทำและพิมพ์บน Toast มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก แล้วตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ -
ขั้นแรกเราได้ลงทะเบียนเครื่องรับโดยคลิกที่ "ปุ่มลงทะเบียนตัวกรองเจตนา" และคลิกที่ส่งข้อมูลเพื่อแสดงขนมปังปิ้งดังที่แสดงด้านล่าง -