কম্পিউটার টিউটোরিয়াল

Android-এ Broadcast Receiver-এ কাস্টম Intent Filter নিবন্ধন করার পদ্ধতি

পরিচয়

উদাহরণের আগে জানা দরকার 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 আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস নির্বাচন করুন। ডিফল্ট স্ক্রিন প্রদর্শিত হবে:

Android-এ Broadcast Receiver-এ কাস্টম Intent Filter নিবন্ধন করার পদ্ধতি

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

Android-এ Broadcast Receiver-এ কাস্টম Intent Filter নিবন্ধন করার পদ্ধতি

  1. অ্যান্ড্রয়েডে কাস্টম ডায়লগ বক্স তৈরি করার পদ্ধতি

  2. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি BroadcastReceiver নিবন্ধন করার পদ্ধতি

  3. অ্যান্ড্রয়েডে SearchView দিয়ে RecyclerView ফিল্টার করবেন কীভাবে?

  4. অ্যান্ড্রয়েডে কাস্টম জেসচার যোগ করার পদ্ধতি