তাই, আমি একটি খেলা ছিল, এবং এটি হল একটি গৃহীত SMS মোছা সম্ভব। দুর্ভাগ্যক্রমে এটি সমস্ত সাধারণ নৌযান নয় :(
আমার কাছে একটি রিসিভার রয়েছে যা আগত এসএমএস বার্তাগুলি তুলে ধরে। অ্যান্ড্রয়েড এসএমএসের আগত রুটিংটি যেভাবে কাজ করে তা হ'ল বার্তাটি ডিকোড করার জন্য দায়ী কোডের টুকরোটি একটি সম্প্রচার প্রেরণ করে (এটি sendBroadcast()
পদ্ধতিটি ব্যবহার করে - যা দুর্ভাগ্যবশত সংস্করণ নয় যা আপনাকে কেবল কল করতে দেয় abortBroadcast()
) যখনই কোনও বার্তা আসে।
আমার রিসিভার সিস্টেম এসএমএস রিসিভারের আগে কল হতে পারে বা নাও হতে পারে এবং যে কোনও ক্ষেত্রে প্রাপ্ত সম্প্রচারের কোনও সম্পত্তি নেই যা _id
এসএমএস টেবিলের কলামটি প্রতিবিম্বিত করতে পারে ।
যাইহোক, এক না হওয়ার কারণে এটি সহজেই আমি নিজেকে সংযুক্ত বস্তু হিসাবে এসএমএসমেজ সহ একটি বিলম্বিত বার্তাটি (হ্যান্ডলারের মাধ্যমে) পোস্ট করি। (আমি মনে করি আপনি নিজেও রান রানযোগ্য হিসাবে পোস্ট করতে পারেন ...)
handler.sendMessageDelayed(handler.obtainMessage(MSG_DELETE_SMS, msg), 2500);
বিলম্বটি নিশ্চিত করার জন্য সেখানে বার্তাটি উপস্থিত হওয়ার সাথে সাথে সমস্ত সম্প্রচার গ্রহণকারীরা তাদের স্টাফ শেষ করে ফেলেছে এবং বার্তাটি নিরাপদে এসএমএস টেবিলে জোর করে রাখা হবে।
যখন বার্তাটি (বা রানযোগ্য) এখানে পাওয়া যায় আমি তা করি:
case MSG_DELETE_SMS:
Uri deleteUri = Uri.parse("content://sms");
SmsMessage msg = (SmsMessage)message.obj;
getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {msg.getOriginatingAddress(), String.valueOf(msg.getTimestampMillis())});
আমি উদ্ভব ঠিকানা এবং টাইমস্ট্যাম্প ক্ষেত্র ব্যবহারের জন্য শুধুমাত্র বার্তা আমি আগ্রহী মোছার একটি খুব উচ্চ সম্ভাবনা নিশ্চিত করতে হবে। যদি আমি আরও বেশি আমি অন্তর্ভুক্ত হতে পারে ভীতু হতে চেয়েছিলেন msg.getMessageBody()
ক্যোয়ারী অংশ হিসেবে বিষয়বস্তু।
হ্যাঁ, বার্তাটি মুছে ফেলা হয়েছে (হুর!)। দুর্ভাগ্যক্রমে বিজ্ঞপ্তি বার আপডেট করা হয়নি :(
আপনি যখন নোটিফিকেশন এরিয়াটি খুলবেন তখন আপনি বার্তাটি আপনার জন্য বসে থাকতে দেখবেন ... তবে আপনি যখন এটি খুলতে এটিতে ট্যাপ করবেন - এটি চলে গেছে!
আমার কাছে এটি যথেষ্ট ভাল নয় - আমি বার্তাটির সমস্ত সন্ধান অদৃশ্য হয়ে যেতে চাই - আমি চাই না যে ব্যবহারকারী যখন সেখানে টিএক্সটি রয়েছে তখনই এটি মনে করতে পারে (এটি কেবল বাগ রিপোর্টের কারণ হতে পারে)।
অভ্যন্তরীণভাবে ওএসে ফোন কল MessagingNotification.updateNewMessageIndicator(Context)
, কিন্তু আমি সেই শ্রেণিটি API থেকে লুকিয়ে রেখেছি, এবং কেবলমাত্র সূচকটি নির্ভুল করার জন্য আমি সেই সমস্ত কোডটিই প্রতিলিপি করতে চাইনি।