ContentResolver ব্যবহার করে SMS ডিলিট করুন
এই উদাহরণটি দেখায় কিভাবে content://sms/ URI ব্যবহার করে ডিভাইসের ইনবক্স থেকে SMS মেসেজ ডিলিট করা যায়। সতর্কতা: এটি সব SMS ডিলিট করে দেবে।
ধাপ ১: প্রজেক্ট তৈরি
ধাপ ২: লেআউট
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<Button
android:id="@+id/bt_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete SMS"
android:layout_centerInParent="true" />
</RelativeLayout>
ধাপ ৩: MainActivity.java
import android.content.Context;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
Button btn = findViewById(R.id.bt_delete);
btn.setOnClickListener(v -> {
if (deleteSMS()) {
Toast.makeText(mContext, "Your message is deleted.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(mContext, "Sorry we can't delete messages.", Toast.LENGTH_LONG).show();
}
});
}
private boolean deleteSMS() {
boolean isDeleted = false;
try {
// সব SMS ডিলিট (নিশ্চিত করে নির্দিষ্ট SMS ডিলিট করুন)
mContext.getContentResolver().delete(Uri.parse("content://sms/"), null, null);
isDeleted = true;
} catch (Exception ex) {
isDeleted = false;
ex.printStackTrace();
}
return isDeleted;
}
}
ধাপ ৪: ম্যানিফেস্টে পারমিশন
<uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" />
⚠️ গুরুত্বপূর্ণ সতর্কতা এবং সীমাবদ্ধতা
- Android 4.4 (KitKat) থেকে শুধু **ডিফল্ট SMS অ্যাপ** ही SMS ডিলিট করতে পারে।
- এই কোড নন-ডিফল্ট অ্যাপে কাজ করবে না (SecurityException থ্রো করবে)।
content://sms/বড় স্কোপ - নির্দিষ্ট SMS ডিলিট করতেWHEREক্লজ ব্যবহার করুন:
নির্দিষ্ট SMS ডিলিট (বेहতর পদ্ধতি)
// নির্দিষ্ট নম্বরের SMS ডিলিট
String where = "address = ?";
String[] args = new String[] {"+8801XXXXXXXXX"};
getContentResolver().delete(Uri.parse("content://sms/"), where, args);
// নির্দিষ্ট আইডির SMS ডিলিট
getContentResolver().delete(Uri.parse("content://sms/" + smsId), null, null);
আধুনিক বিকল্প (Android 10+)
Scoped Storage এবং SMS Retriever API ব্যবহার করুন। পূর্ণ SMS এক্সেসের জন্য Play Store-এ বিশেষ অনুমোদন লাগে।