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

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

অ্যান্ড্রয়েডে সিম কার্ডের সিরিয়াল নম্বর (ICCID) পাওয়ার পদ্ধতি

এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে একটি অ্যান্ড্রয়েড অ্যাপ থেকে ডিভাইসের ডিফল্ট সিম কার্ডের уникаল সিরিয়াল নম্বর (ICCID) প্রোগ্রামেটিকভাবে বের করা যায়। এটি TelephonyManager ক্লাসের getSimSerialNumber() মেথড ব্যবহার করে করা হয়। আধুনিক অ্যান্ড্রয়েড ভার্সনে এটি করার জন্য রানটাইম অনুমতি (Runtime Permission) আবশ্যক।

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

Android Studio-তে File → New Project সিলেক্ট করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেয়াউট ডিজাইন করুন (res/layout/activity_main.xml)

সিম সিরিয়াল নম্বর প্রদর্শনের জন্য একটি TextView যুক্ত করুন।

<?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)

MainActivity.java ফাইলে নিচের কোডটি ব্যবহার করুন। এখানে READ_PHONE_STATE, READ_SMS এবং READ_PHONE_NUMBERS অনুমতিগুলি চেক করা হয়েছে।

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.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, READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{READ_SMS, READ_PHONE_NUMBERS, READ_PHONE_STATE}, PERMISSION_REQUEST_CODE);
        } else {
            textView.setText("" + telephonyManager.getSimSerialNumber());
        }
    }

    @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, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                    return;
                } else {
                    textView.setText("" + telephonyManager.getSimSerialNumber());
                }
        }
    }
}

ধাপ ৪: ম্যানিফেস্টে অনুমতি যোগ করুন (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.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>

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

আসল ডিভাইস সংযুক্ত করে Android Studio-তে Run বাটনে ক্লিক করুন। ডিভাইসের স্ক্রিনে সিমের সিরিয়াল নম্বর (ICCID) প্রদর্শিত হবে।

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

মहত্বপূর্ণ টিপস

  • ডুয়াল সিম ডিভাইসে getSimSerialNumber() সাধারণত প্রথম স্লটের (Slot 1) সিমের তথ্য রিটার্ন করে।
  • Android 10+ এ এই মেথডটি কাজ করার জন্য READ_PRIVILEGED_PHONE_STATE অনুমতি বা ক্যারিয়ার প্রিভিলেজ দরকার হতে পারে।
  • সিম কার্ড না থাকলে বা অনুমতি না থাকলে এই মেথডটি null রিটার্ন করতে পারে।
  1. অ্যান্ড্রয়েডে ফুলস্ক্রিন এক্টিভিটি কীভাবে তৈরি করবেন?

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

  3. অ্যান্ড্রয়েড ডিভাইসের সিরিয়াল নম্বর বের করার পদ্ধতি

  4. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ডিভাইসের IMEI/ESN নম্বর পাওয়ার পদ্ধতি