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

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

অ্যান্ড্রয়েডে ডিভাইস আইডি পাওয়ার পদ্ধতি

এই উদাহরণটি দেখাবে কিভাবে একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনে প্রোগ্রামেটিকভাবে ডিভাইসের уникаল আইডি (Device ID) পেতে হয়। আধুনিক অ্যান্ড্রয়েড ভার্সনে গোপনীয়তা নীতিমালা কঠোর হওয়ার কারণে এই কাজের জন্য রানটাইম অনুমতি (Runtime Permission) গ্রহণ করা বাধ্যতামূলক।

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

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় তথ্য পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেয়াউট ফাইল সংশোধন করুন (res/layout/activity_main.xml)

নিচের XML কোডটি আপনার 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 ফাইলে নিচের কোডটি যোগ করুন। এই কোডটি TelephonyManager ব্যবহার করে ডিভাইস আইডি বের করে এবং প্রয়োজনীয় অনুমতিগুলি (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.getDeviceId());
        }
    }

    @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.getDeviceId());
                }
        }
    }
}

ধাপ ৪: ম্যানিফেস্ট ফাইলে অনুমতি যোগ করুন (AndroidManifest.xml)

AndroidManifest.xml ফাইলের <manifest> ট্যাগের ভিতরে নিচের অনুমতিগুলি ঘোষণা করুন।

<?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 আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং স্ক্রিনে ডিভাইস আইডি দেখুন।

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

গুরুত্বপূর্ণ নোট

  • Android 10 (API 29) এবং তার উপরের ভার্সনে getDeviceId() ডিপ্রিকেট করা হয়েছে। বদলে getImei() বা getMeid() ব্যবহার করতে হয়, যা READ_PRIVILEGED_PHONE_STATE অনুমতি দরকার।
  • সার্বজনীন অ্যাপের জন্য ডিভাইস আইডি ব্যবহার না করে Resettable Device Identifiers (যেমন Advertising ID) ব্যবহার করা ভালো অভ্যাস।
  1. এন্ড্রয়েডে প্রোগ্রামেটিক্যালি ডিভাইসের IP ঠিকানা পাওয়ার পদ্ধতি

  2. অ্যান্ড্রয়েডে ডিভাইস আইডি (Device ID) পাওয়ার এবং সংরক্ষণ করার পদ্ধতি

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

  4. Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি