আমি ইনবক্স থেকে একটি এসএমএস মুছে ফেলছি তবে আমি জানতে চাই: ইনবক্সে পৌঁছানোর আগে আমি কীভাবে এটি মুছতে পারি?
আমি ইনবক্স থেকে একটি এসএমএস মুছে ফেলছি তবে আমি জানতে চাই: ইনবক্সে পৌঁছানোর আগে আমি কীভাবে এটি মুছতে পারি?
উত্তর:
হ্যাঁ.
এই প্রশ্নের কিছু নেতিবাচক প্রতিক্রিয়া সত্ত্বেও, এসএমএস বাধা দেওয়ার জন্য বৈধ ব্যবহার রয়েছে। উদাহরণস্বরূপ: ফোন নম্বর যাচাইকরণ স্বয়ংক্রিয়করণ, পরিষেবাগুলি যা এসএমএসের মাধ্যমে সরবরাহ করা হয় (যদিও এটি সাধারণত ডেটা এসএমএসের মাধ্যমে করা উচিত), বা অ্যাপ্লিকেশনগুলির জন্য যা অন্যথায় একটি দুর্দান্ত অ্যান্ড্রয়েডে দেখানোর জন্য বিশেষভাবে ফর্ম্যাট করা বার্তাগুলি প্রক্রিয়াকরণের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে নির্দিষ্ট ইউআই।
অ্যান্ড্রয়েড 1.6 হিসাবে, আগত এসএমএস বার্তা সম্প্রচারগুলি ( android.provider.Telephony.SMS_RECEIVED
) " অর্ডার করা সম্প্রচার " হিসাবে ডেলিভারি করা হয় - এর অর্থ আপনি প্রথমে কোন উপাদানগুলির সম্প্রচারটি গ্রহণ করা উচিত তা সিস্টেমটিকে বলতে পারেন।
আপনি যদি android:priority
আপনার এসএমএস-শোনার ক্ষেত্রে কোনও বৈশিষ্ট্যটি সংজ্ঞায়িত করেন তবে আপনি <intent-filter>
নেটিভ এসএমএস অ্যাপ্লিকেশনটির আগে বিজ্ঞপ্তিটি পাবেন।
এই মুহুর্তে, আপনি অন্য অ্যাপ্লিকেশনগুলিতে প্রচার হতে বাধা দিয়ে ব্রডকাস্টটি বাতিল করতে পারেন ।
আপডেট (অক্টোবর ২০১৩): অ্যান্ড্রয়েড ৪.৪ আসার পরে এটি এসএমএস এপিআইগুলিতে পরিবর্তন আনবে যা কোনও অ্যাপ্লিকেশনটির এসএমএস বিতরণকে প্রভাবিত করার ক্ষমতাকে প্রভাবিত করতে পারে।
কিছু আরও তথ্যের জন্য এই Android ডেভেলপারগণ ব্লগ পোস্ট পরীক্ষা করে দেখুন:
http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html
1000
তাই এটি সম্ভব। আসলে, হ্যান্ডসেন্ট অগ্রাধিকার ব্যবহার করছে 2147483647
।
"Beginning with Android 4.4—any attempt by your app to abort the SMS_RECEIVED_ACTION broadcast will be ignored so all apps interested have the chance to receive it."
।
পদক্ষেপ -১: এসএমএস পাওয়ার জন্য আপনার কাস্টম সম্প্রচারের রিসিভারটি তৈরি করুন। ব্রডকাস্টটি বাতিল করতে যুক্তিটি লিখুন যাতে বার্তাটি আপনার ইনবক্সে না পাওয়া যায়
public class SMSReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
if(conditionMatches){
abortBroadcast();
}
}
}
পদক্ষেপ -2 অ্যান্ডোরিডমেনিস্টে ব্রডকাস্ট রিসিভারটি নিবন্ধিত করুন এবং অ্যান্ড্রয়েড রাখুন: অগ্রাধিকারের মান একটি বড় সংখ্যার
<receiver android:name=".SMSReceiver" >
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
এটাই
উপরের কোডটি কীভাবে কাজ করে
যেহেতু এসএমএস প্রাপ্ত ব্রড কাস্টটি হ'ল অর্ডারযুক্ত সম্প্রচারটি উচ্চ অগ্রাধিকার সহ গ্রহীতা প্রথমে গ্রহণ করবে তাই আপনার আবেদনটি প্রথমে প্রাপ্ত হয় এবং প্রাপ্তির পরে আপনি সম্প্রচার বাতিল করে দিচ্ছেন। সুতরাং অন্য কোনও অ্যাপ্লিকেশন এটি গ্রহণ করতে পারে না। সুতরাং ইনবক্সে এসএমএসের অস্তিত্ব থাকবে না
নীচের ("অ্যান্ড্রয়েড: অগ্রাধিকার" এবং অ্যাবোর্টড্রোডকাস্ট ()) সমাধান অ্যান্ড্রয়েড মেসেজিং অ্যাপ্লিকেশন হিসাবে ডিফল্ট হিসাবে কাজ করে (আমি স্টক অ্যান্ড্রয়েড মেসেজিং অ্যাপ্লিকেশনটি বোঝাই)। যদি ব্যবহারকারী "GoSMSPro" বা "HandcentSMS" ইনস্টল করেন, এই অ্যাপ্লিকেশনগুলি এখনও ইনবক্সে বার্তা দেখায়, "অ্যান্ড্রয়েড: অগ্রাধিকার" এর কারণে আমি এটি বিশ্বাস করি। তৃতীয় পক্ষের মেসেজিং অ্যাপ্লিকেশনগুলি ফোনে ইনস্টল করা থাকলে উপরের সমস্যাটি সমাধান করার জন্য আমি এর থেকে ভাল আর কোনও উপায় দেখতে পাচ্ছি না।
/**
* Check priority
* @param activity
*/
public static void receiverPriority(Activity activity){
Intent smsRecvIntent = new Intent("android.provider.Telephony.SMS_RECEIVED");
List<ResolveInfo> infos = activity.getPackageManager().queryBroadcastReceivers(smsRecvIntent, 0);
for (ResolveInfo info : infos) {
System.out.println("Receiver: " + info.activityInfo.name + ", priority=" + info.priority);
}
}
অগ্রাধিকার পরীক্ষা করুন এবং অন্যান্য প্রাপকদের চেয়ে উচ্চ অগ্রাধিকার সেট করুন (আপনার ম্যানিফেস্টে)।
যদি আপনার মতো দৃশ্য থাকে এবং আপনি এই পরিচিতি নম্বর "+ 44xxxxx" ইত্যাদি সম্পর্কিত বার্তাটি মুছতে বা উপেক্ষা করতে চান, তবে এসএমএস ব্রডকাস্ট রিসিভারে এই কোডটি ব্যবহার করুন
if(sender.equalsIgnoreCase("+44xxxxxx")
this.abortBroadCast();
আপনি এটি উচ্চ অগ্রাধিকার সেট করতে হবে।