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

ডুয়াল সিম মোবাইলে SmsManager ব্যবহার করে SMS পাঠাবেন কীভাবে?

SmsManager এবং রানটাইম পারমিশন দিয়ে SMS পাঠানো

এই টিউটোরিয়ালটি দেখায় কীভাবে অ্যান্ড্রয়েডে SMS পাঠানো যায়, রানটাইম পারমিশন হ্যান্ডলিং সহ। ডুয়াল সিম ডিভাইসে ডিফল্ট সিম ব্যবহার হয়।

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

Android Studio-তে নতুন প্রজেক্ট।

ধাপ ২: লেআউট (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="4dp"
    tools:context=".MainActivity">
    <EditText
        android:hint="মোবাইল নম্বর লিখুন"
        android:id="@+id/editTextNum"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:hint="আপনার বার্তা লিখুন"
        android:id="@+id/editTextMsg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/btnSendMsg"
        android:onClick="SendSMS"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="বার্তা পাঠান"/>
</LinearLayout>

ধাপ ৩: MainActivity.java - পুরো বাস্তবায়ন

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Button btnSend;
    EditText editTextNum, editTextMsg;
    private static final int PERMISSION_REQUEST = 101;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        editTextNum = findViewById(R.id.editTextNum);
        editTextMsg = findViewById(R.id.editTextMsg);
        btnSend = findViewById(R.id.btnSendMsg);
    }

    public void SendSMS(View view) {
        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS);
        
        if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
            sendMessage();
        } else {
            ActivityCompat.requestPermissions(this, 
                new String[]{Manifest.permission.SEND_SMS}, PERMISSION_REQUEST);
        }
    }

    private void sendMessage() {
        String phoneNumber = editTextNum.getText().toString().trim();
        String message = editTextMsg.getText().toString().trim();
        
        if (phoneNumber.isEmpty() || message.isEmpty()) {
            Toast.makeText(this, "ফিল্ড খালি রাখা যাবে না", Toast.LENGTH_SHORT).show();
            return;
        }
        
        if (TextUtils.isDigitsOnly(phoneNumber)) {
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(phoneNumber, null, message, null, null);
            Toast.makeText(this, "বার্তা পাঠানো হয়েছে", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "সঠিক নম্বর লিখুন", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        
        if (requestCode == PERMISSION_REQUEST) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                sendMessage();
            } else {
                Toast.makeText(this, "SMS পাঠানোর অনুমতি দেওয়া হয়নি", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

ধাপ ৪: AndroidManifest.xml - পারমিশন যোগ করুন

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <uses-permission android:name="android.permission.SEND_SMS"/>
    
    <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>

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

  • ডুয়াল সিম: SmsManager.getDefault() ডিফল্ট সিম ব্যবহার করে। নির্দিষ্ট সিমের জন্য SubscriptionManager ব্যবহার করুন (API 22+)
  • পারমিশন: Android 6.0+ (API 23+) এ রানটাইম পারমিশন বাধ্যতামূলক
  • PDU লিমিট: দীর্ঘ বার্তা স্বয়ংক্রিয়ভাবে একাধিক SMS-এ ভাগ হয়
  • ডেলিভারি রিপোর্ট: PendingIntent দিয়ে ডেলিভারি কনফার্মেশন পেতে পারেন

উন্নত: নির্দিষ্ট সিম থেকে পাঠানো (API 22+)

SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subscriptions = subscriptionManager.getActiveSubscriptionInfoList();

if (subscriptions != null && !subscriptions.isEmpty()) {
    // প্রথম সিম ব্যবহার করুন
    int subId = subscriptions.get(0).getSubscriptionId();
    SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
    smsManager.sendTextMessage(phoneNumber, null, message, sentIntent, deliveryIntent);
}
  1. অ্যান্ড্রয়েড অ্যাপ থেকে HTML ইমেইল পাঠানোর পদ্ধতি

  2. এন্ড্রয়েডে ফাইল সংযুক্ত করে ইমেইল পাঠানোর পদ্ধতি

  3. অ্যান্ড্রয়েডে AlarmManager ব্যবহার করে সার্ভিস শুরু করার পদ্ধতি

  4. JavaMail API ব্যবহার করে Android-এ ইমেইল পাঠানো