অ্যান্ড্রয়েডে কোনও এসএমএস ইনবক্সে পৌঁছানোর আগেই কি আমরা মুছতে পারি?


100

আমি ইনবক্স থেকে একটি এসএমএস মুছে ফেলছি তবে আমি জানতে চাই: ইনবক্সে পৌঁছানোর আগে আমি কীভাবে এটি মুছতে পারি?


2
এখানে কি জে 2 আই সত্যিই একটি মিল আছে?
জিটার

1
জাভা কেন ভুল হবে আপনি অ্যান্ড্রয়েডে জাভাতে প্রোগ্রাম করবেন না?
জিটার

3
এই মন্দ। আপনার এটি করা উচিত নয়।
ম্যাটসি

43
বৈধ ব্যবহার আছে! উদাহরণস্বরূপ, যদি আপনি আপনার ফোনে কোনও জিনিস (জিপিএসের অবস্থান, মোছা বা কোনও কিছু প্রেরণ করতে চান) এসএমএসের মাধ্যমে চুরি হয়ে যায় তবে; আপনি চান না যে ফোনটি চুরি করেছে সে এই এসএমএস বার্তাটি দেখতে পাবে।
বহুগ্লোট

21
আসো মানুষ! এটি অবশ্যই "মন্দ" নয়। @ পোলিগ্লট ঠিক আছে! আমি ব্যবহারকারীর নম্বর (ভাইবারের মতো) নিশ্চিত করতে একটি অ্যাপ্লিকেশন করছি এবং আমার এটির প্রয়োজন। সমস্ত কিছুই "দুষ্ট" হিসাবে ব্যবহার করা যেতে পারে। মন্দ অ্যাপগুলি ইনস্টল করবেন না, ঠিক এটি just
ফিলিপ

উত্তর:


187

হ্যাঁ.

এই প্রশ্নের কিছু নেতিবাচক প্রতিক্রিয়া সত্ত্বেও, এসএমএস বাধা দেওয়ার জন্য বৈধ ব্যবহার রয়েছে। উদাহরণস্বরূপ: ফোন নম্বর যাচাইকরণ স্বয়ংক্রিয়করণ, পরিষেবাগুলি যা এসএমএসের মাধ্যমে সরবরাহ করা হয় (যদিও এটি সাধারণত ডেটা এসএমএসের মাধ্যমে করা উচিত), বা অ্যাপ্লিকেশনগুলির জন্য যা অন্যথায় একটি দুর্দান্ত অ্যান্ড্রয়েডে দেখানোর জন্য বিশেষভাবে ফর্ম্যাট করা বার্তাগুলি প্রক্রিয়াকরণের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে নির্দিষ্ট ইউআই।

অ্যান্ড্রয়েড 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


13
পবিত্র দেবতা. এটা সত্য! আমি সবসময় ধরে নিয়েছি এটি অন্যভাবে হবে! প্রমাণের জন্য, এখানে দেখুন । কি দারুন. আশা করি আমি আপনাকে একাধিক উত্সাহ দিতে পারতাম;)
হামি

1
@ কাকোপ্প্পা: হ্যাঁ, উত্তরে উল্লিখিত হিসাবে এটি অ্যান্ড্রয়েড 1.6+ থেকে কাজ করে।
ক্রিস্টোফার অর

1
@ হিরোমে আমার কাছে অ্যাপ্লিকেশন রয়েছে যা অগ্রাধিকার ব্যবহার করে 1000তাই এটি সম্ভব। আসলে, হ্যান্ডসেন্ট অগ্রাধিকার ব্যবহার করছে 2147483647
ক্রিস্টোফার অর

2
এটি আমার পক্ষে কাজ করেছে :) প্রথমে আমার অ্যাপ্লিকেশনটি ধরা ম্যাসেজ এবং কোনও বিজ্ঞপ্তি নেই তবে এসএমএস বার্তাগুলি ইনবক্সে পাচ্ছে না। এটি কখনই গ্রহণ করা হয়নি, কেবল আমার অ্যাপে। ইনবক্সে বার্তাগুলি গ্রহণ ছাড়াও কি অ্যাওর্ট ব্রডকাস্ট ব্যবহারের কোনও উপায় আছে?
পান্ডাবারে

7
@ খ্রিস্টোফার ওআর তার আপডেটে বলেছেন যে নতুন এপিআই স্তরের 19 টি মনে রাখা গুরুত্বপূর্ণ। সেখানে এটা বলে "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."
GoRoS

11

পদক্ষেপ -১: এসএমএস পাওয়ার জন্য আপনার কাস্টম সম্প্রচারের রিসিভারটি তৈরি করুন। ব্রডকাস্টটি বাতিল করতে যুক্তিটি লিখুন যাতে বার্তাটি আপনার ইনবক্সে না পাওয়া যায়

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>

এটাই

উপরের কোডটি কীভাবে কাজ করে

যেহেতু এসএমএস প্রাপ্ত ব্রড কাস্টটি হ'ল অর্ডারযুক্ত সম্প্রচারটি উচ্চ অগ্রাধিকার সহ গ্রহীতা প্রথমে গ্রহণ করবে তাই আপনার আবেদনটি প্রথমে প্রাপ্ত হয় এবং প্রাপ্তির পরে আপনি সম্প্রচার বাতিল করে দিচ্ছেন। সুতরাং অন্য কোনও অ্যাপ্লিকেশন এটি গ্রহণ করতে পারে না। সুতরাং ইনবক্সে এসএমএসের অস্তিত্ব থাকবে না


যখন আমরা একটি ব্রডকাস্ট রিসিভার পেতে পারি, যখন ব্যবহারকারী বার্তাটি ইনবক্স টিপায়, যাতে আমি একটি লক স্ক্রিন বিকাশ করতে পারি ..
বামসি পবন মহেশ

9

নীচের ("অ্যান্ড্রয়েড: অগ্রাধিকার" এবং অ্যাবোর্টড্রোডকাস্ট ()) সমাধান অ্যান্ড্রয়েড মেসেজিং অ্যাপ্লিকেশন হিসাবে ডিফল্ট হিসাবে কাজ করে (আমি স্টক অ্যান্ড্রয়েড মেসেজিং অ্যাপ্লিকেশনটি বোঝাই)। যদি ব্যবহারকারী "GoSMSPro" বা "HandcentSMS" ইনস্টল করেন, এই অ্যাপ্লিকেশনগুলি এখনও ইনবক্সে বার্তা দেখায়, "অ্যান্ড্রয়েড: অগ্রাধিকার" এর কারণে আমি এটি বিশ্বাস করি। তৃতীয় পক্ষের মেসেজিং অ্যাপ্লিকেশনগুলি ফোনে ইনস্টল করা থাকলে উপরের সমস্যাটি সমাধান করার জন্য আমি এর থেকে ভাল আর কোনও উপায় দেখতে পাচ্ছি না।


2
ভাল যুক্তি. তবে এটি একটি মন্তব্য হওয়া উচিত, উত্তর নয়। এটি কি সরানো সম্ভব? --- এবং যদি আপনি খুব উচ্চ মূল্য রাখেন? অ্যান্ড্রয়েড হিসাবে: অগ্রাধিকার = "9999"? উদাহরণ স্বরূপ? আপনি কি চেষ্টা করেছেন?
ফিলিপ

4
@ ফিলিপমিকারোনি লল্লি আসলে এসএমএস প্রো, ইত্যাদি যান ... তাদের অগ্রাধিকারের জন্য
2147483647

1
@ ডিডোস্যাটাক 2147483647 সর্বাধিক?
ফিলিপ

3
এটা তোলে বৃহত্তম স্বাক্ষরবিহীন পূর্ণসংখ্যা en.wikipedia.org/wiki/Integer_(computer_science) সর্বোচ্চ যা Android সমর্থন করে 999. developer.android.com/reference/android/content/...
rf43

2
পছন্দ করুন 999 সর্বোচ্চ অগ্রাধিকার। আপনি যে নম্বর বেছে নিন তা আপনি ব্যবহার করতে পারেন, অ্যান্ড্রয়েড কেবল 999 পর্যন্ত গ্যারান্টি দেবে। এর থেকে বড় কিছু এবং এটি অস্থির হতে পারে এবং না পারে অনিচ্ছাকৃত পরিণতি হতে পারে। ব্যক্তিগতভাবে, যেতে এসএমএস প্রো এর মতো অ্যাপ্লিকেশনগুলিতে যাওয়ার চেষ্টা করার জন্য আমাকে 2147483647 ব্যবহার করতে হয়েছিল। কখনও কখনও এটি ব্যবহারকারীদের জন্য কাজ করে এবং কখনও কখনও তা করেনি।
rf43

1
/**
 * 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);
    }
}

অগ্রাধিকার পরীক্ষা করুন এবং অন্যান্য প্রাপকদের চেয়ে উচ্চ অগ্রাধিকার সেট করুন (আপনার ম্যানিফেস্টে)।


0

যদি আপনার মতো দৃশ্য থাকে এবং আপনি এই পরিচিতি নম্বর "+ 44xxxxx" ইত্যাদি সম্পর্কিত বার্তাটি মুছতে বা উপেক্ষা করতে চান, তবে এসএমএস ব্রডকাস্ট রিসিভারে এই কোডটি ব্যবহার করুন

 if(sender.equalsIgnoreCase("+44xxxxxx")
   this.abortBroadCast();

আপনি এটি উচ্চ অগ্রাধিকার সেট করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.