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

অ্যান্ড্রয়েডে সিম সার্ভিস ইনফরমেশন (Service State) কীভাবে পেতে হয়?

অ্যান্ড্রয়েডে TelephonyManager দিয়ে সিম সার্ভিস স্টেট (Service State) পাওয়া

এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে ডিভাইসের বর্তমান নেটওয়ার্ক সার্ভিস স্টেট (যেমন: ইন সার্ভিস, আউট অফ সার্ভিস, ইমার্জেন্সি ওনলি, রোমিং ইত্যাদি) প্রোগ্রামেটিকভাবে বের করা যায়। TelephonyManager.getServiceState() মেথডটি একটি ServiceState অবজেক্ট রিটার্ন করে যার থেকে বিস্তারিত তথ্য পাওয়া যায়।

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project দিয়ে প্রজেক্ট তৈরি করুন।

ধাপ ২: লেয়াউট ফাইল (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:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

ধাপ ৩: জাভা কোড (java/MainActivity.java)

এখানে READ_PHONE_STATE, READ_SMS, READ_PHONE_NUMBERS এবং ACCESS_COARSE_LOCATION অনুমতি চেক করা হয়েছে। getServiceState() কল করে সার্ভিস স্টেট অবজেক্ট পাওয়া হয়েছে।

package com.example.myapplication;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.widget.TextView;

import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.READ_PHONE_NUMBERS;
import static android.Manifest.permission.READ_PHONE_STATE;
import static android.Manifest.permission.READ_SMS;

public class MainActivity extends AppCompatActivity {
    private static final int PERMISSION_REQUEST_CODE = 100;
    TextView textView;
    TelephonyManager telephonyManager;

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text);
        telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

        if (ActivityCompat.checkSelfPermission(this, READ_SMS) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{READ_SMS, READ_PHONE_NUMBERS, READ_PHONE_STATE, ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_CODE);
        } else {
            textView.setText("" + telephonyManager.getServiceState());
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case PERMISSION_REQUEST_CODE:
                if (ActivityCompat.checkSelfPermission(this, READ_SMS) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                    return;
                } else {
                    textView.setText("" + telephonyManager.getServiceState());
                }
        }
    }
}

ধাপ ৪: ম্যানিফেস্টে অনুমতি (AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.myapplication">
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

অ্যাপ্লিকেশনটি রান করুন

ডিভাইস সংযুক্ত করে Run করুন। টেক্সট ভিউতে ServiceState অবজেক্টের টু-স্ট্রিং রিপ্রেজেন্টেশন দেখাবে (যেমন: ServiceState: 0 মানে ইন সার্ভিস)।

অ্যান্ড্রয়েডে সিম সার্ভিস ইনফরমেশন (Service State) কীভাবে পেতে হয়?

ServiceState থেকে বিস্তারিত তথ্য বের করা

ServiceState অবজেক্ট থেকে শুধু টু-স্ট্রিং না বের করে স্পেসিফিক তথ্য পাওয়া যায়:

ServiceState serviceState = telephonyManager.getServiceState();
int state = serviceState.getState(); // STATE_IN_SERVICE, STATE_OUT_OF_SERVICE, STATE_EMERGENCY_ONLY, STATE_POWER_OFF
boolean isRoaming = serviceState.getRoaming();
String operatorName = serviceState.getOperatorAlphaLong(); // অপারেটরের নাম
int networkType = serviceState.getNetworkType(); // LTE, 5G, UMTS ইত্যাদি

এই মেথডগুলো ব্যবহার করে ইউজারকে বেটার UI দেখানো যায়।

  1. অ্যান্ড্রয়েডে ডিভাইস আইডি কীভাবে পেতে হয়?

  2. অ্যান্ড্রয়েডে ডিফল্ট সিম সিরিয়াল নম্বর কীভাবে পেতে হয়?

  3. এন্ড্রয়েডে রুট ডিরেক্টরি ইনফরমেশন পাওয়ার উপায়

  4. অ্যান্ড্রয়েডে থ্রেড গ্রুপের তথ্য পাওয়ার পদ্ধতি