Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

ใน Android จะลงทะเบียนตัวกรอง Intent ที่กำหนดเองกับเครื่องรับออกอากาศได้อย่างไร


ก่อนเข้าสู่ตัวอย่างเราควรรู้ว่า 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 จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก แล้วตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ -

ใน Android จะลงทะเบียนตัวกรอง Intent ที่กำหนดเองกับเครื่องรับออกอากาศได้อย่างไร

ขั้นแรกเราได้ลงทะเบียนเครื่องรับโดยคลิกที่ "ปุ่มลงทะเบียนตัวกรองเจตนา" และคลิกที่ส่งข้อมูลเพื่อแสดงขนมปังปิ้งดังที่แสดงด้านล่าง -

ใน Android จะลงทะเบียนตัวกรอง Intent ที่กำหนดเองกับเครื่องรับออกอากาศได้อย่างไร