পরিচয়
উদাহরণের আগে জানা দরকার Android-এ Intent Filter কী। Intent Filter হলো IntentFilter ক্লাসের একটি ইনস্ট্যান্স। ইমপ্লিসিট ইন্টেন্ট ব্যবহার করার সময় এটি সাহায্যকারী, এটি জাভা কোডে হ্যান্ডেল করা হয় না, AndroidManifest.xml-এ সেট আপ করতে হয়। Android-কে জানতে হয় কী ধরনের ইন্টেন্ট লঞ্চ করা হচ্ছে, তাই ইন্টেন্ট ফিল্টার Android-কে ইন্টেন্ট এবং অ্যাকশন সম্পর্কে তথ্য দেয়।
ইন্টেন্ট লঞ্চ করার আগে Android অ্যাকশন টেস্ট, ক্যাটাগরি টেস্ট এবং ডেটা টেস্ট করে। এই উদাহরণটি দেখাবে কীভাবে Android-এ ব্রডকাস্ট রিসিভারের জন্য কাস্টম ইন্টেন্ট ফিল্টার ব্যবহার করা যায়।
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে যান: File → New Project এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেয়াউট XML কনফিগার করুন
res/layout/activity_main.xml ফাইলে নিচের কোডটি যোগ করুন:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/buton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intent Filter Register Button" />
<Button
android:id="@+id/buton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send Data" />
</LinearLayout>
উপরের কোডে দুটি বাটন রয়েছে: একটি ইন্টেন্ট নিবন্ধনের জন্য এবং অন্যটি ব্রডকাস্টে ডেটা পাঠানোর জন্য।
ধাপ ৩: MainActivity.java-তে লজিক লিখুন
src/MainActivity.java ফাইলে নিচের কোডটি যোগ করুন:
package com.example.andy.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
RadioButton radioButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = findViewById(R.id.buton);
final Button send = findViewById(R.id.buton1);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.andy.CUSTOM_INTENT");
sendBroadcast(intent);
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
registerReceiver(mMessageReceiver, new IntentFilter("com.example.andy.CUSTOM_INTENT"));
}
});
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String message = intent.getAction();
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
};
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mMessageReceiver);
}
}
কোড ব্যাখ্যা
বাটনে ক্লিক করলে কাস্টম ব্রডকাস্ট অ্যাকশন ব্যবহার করে রিসিভার নিবন্ধিত হয়:
registerReceiver(mMessageReceiver, new IntentFilter("com.example.andy.CUSTOM_INTENT"));
এটি একটি ডাইনামিক ব্রডকাস্ট রিসিভার তাই onPause()-এ আনরেজিস্টার করতে হয়:
unregisterReceiver(mMessageReceiver);
একটি আরও বাটন ব্রডকাস্ট পাঠাতে ব্যবহৃত হয়েছে:
Intent intent = new Intent("com.example.andy.CUSTOM_INTENT");
sendBroadcast(intent);
ডাইনামিক ব্রডকাস্ট রেজিস্ট্রেশন হওয়ায় আলাদা রিসিভার ফাইল তৈরি করার প্রয়োজন নেই, একই এক্টিভিটিতে ব্রডকাস্ট রিসিভার ডিক্লেয়ার করা হয়েছে:
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getAction();
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
};
উপরের কোডে ইন্টেন্ট থেকে অ্যাকশন নেওয়া হয়েছে এবং Toast-এ প্রিন্ট করা হয়েছে।
অ্যাপ্লিকেশন চালান
আপনার Android ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-তে প্রজেক্টের একটি Activity ফাইল খুলুন এবং টুলবারের Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস নির্বাচন করুন। ডিফল্ট স্ক্রিন প্রদর্শিত হবে:

প্রথমে "Intent Filter Register Button"-এ ক্লিক করে রিসিভার নিবন্ধন করুন, তারপর "Send Data"-এ ক্লিক করলে Toast দেখাবে:
