অগ্রগতিগতভাবে কোনও বিজ্ঞপ্তি পরিষ্কার করা সম্ভব?
আমি এটি দিয়ে চেষ্টা করেছি NotificationManager
কিন্তু এটি কাজ করছে না। আমি এটি করতে পারে অন্য কোন উপায় আছে?
অগ্রগতিগতভাবে কোনও বিজ্ঞপ্তি পরিষ্কার করা সম্ভব?
আমি এটি দিয়ে চেষ্টা করেছি NotificationManager
কিন্তু এটি কাজ করছে না। আমি এটি করতে পারে অন্য কোন উপায় আছে?
উত্তর:
একটি বিজ্ঞপ্তি বাতিল করতে নিম্নলিখিত কোডটি ব্যবহার করুন:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
এই কোডটিতে সর্বদা একই আইডি বিজ্ঞপ্তিগুলির জন্য ব্যবহৃত হয়। আপনার যদি পৃথক বিজ্ঞপ্তিগুলি বাতিল করতে হয় তবে আপনাকে বিজ্ঞপ্তি তৈরি করতে ব্যবহৃত আইডিকে সংরক্ষণ করতে হবে।
setContentText
) যদিও আমি অগ্রাধিকারটি ২ সেট করে রেখেছি? কোনও পরামর্শ?
থেকে: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
ব্যবহারকারী যখন বিজ্ঞপ্তি উইন্ডো থেকে এটি নির্বাচন করেন তখন স্ট্যাটাস বারের বিজ্ঞপ্তিটি সাফ করার জন্য আপনার বিজ্ঞপ্তি অবজেক্টে "FLAG_AUTO_CANCEL" পতাকা যুক্ত করুন। আপনি এটি বাতিল (ইনট) দিয়ে ম্যানুয়ালি সাফ করতে পারেন, এটিকে নোটিফিকেশন আইডি দিয়ে যাবেন বা বাতিল হওয়া সমস্ত () দিয়ে আপনার সমস্ত বিজ্ঞপ্তি সাফ করুন।
তবে ডোনাল ঠিক আছে, আপনি তৈরি করা বিজ্ঞপ্তিগুলি কেবল সাফ করতে পারেন।
যেহেতু কেউই এর জন্য একটি উত্তর উত্তর পোস্ট করেননি:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. এবং আপনার যদি ইতিমধ্যে পতাকা থাকে তবে আপনি এটি পছন্দ করতে বা FLAG_AUTO_CANCEL করতে পারেন:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
notifcation.flags |= Notification.FLAG_AUTO_CANCEL;
নোটিফিকেশন ম্যানেজারের মধ্যে সরবরাহ করা ডিফল্ট পদ্ধতি চেষ্টা করুন ।
NotificationManager.cancelAll()
সমস্ত বিজ্ঞপ্তি অপসারণ করতে।
NotificationManager.cancel(notificationId)
নির্দিষ্ট বিজ্ঞপ্তি অপসারণ করতে।
cancel
পদ্ধতি না রাখার জন্য আটকে থাকে তবে cancel
পদ্ধতিটি অচল নয়, সুতরাং আপনার NotificationManager
এই জাতীয় উদাহরণ প্রয়োজন : NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
তারপরে আপনি notificationManager.cancel(notificationId);
তার উত্তরে রোহিত সুথারের মতো ফোন করতে পারেন । notificationId
কেবল আইডি আপনি মধ্যে পাসnotificationManager.notify(notificationId, mNotification)
এপিআই স্তরের 18 (জেলিবিয়ান এমআর 2) দিয়ে শুরু করে আপনি নোটিফিকেশনলিস্টনার সার্ভিসের মাধ্যমে আপনার নিজস্ব ছাড়া অন্য বিজ্ঞপ্তিগুলি বাতিল করতে পারেন।
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class MyNotificationListenerService extends NotificationListenerService {...}
...
private void clearNotificationExample(StatusBarNotification sbn) {
myNotificationListenerService.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
Notification mNotification = new Notification.Builder(this)
.setContentTitle("A message from: " + fromUser)
.setContentText(msg)
.setAutoCancel(true)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.build();
.setAutoCancel (সত্য)
আপনি যখন বিজ্ঞপ্তিতে ক্লিক করেন, সংশ্লিষ্ট কার্যকলাপ খুলুন এবং বিজ্ঞপ্তি বার থেকে বিজ্ঞপ্তি সরান
আপনি যদি NotificationCompat.Builder
(একটি অংশ android.support.v4
) ব্যবহার করছেন তবে কেবল তার বস্তুর পদ্ধতিতে কল করুনsetAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
কিছু লোক রিপোর্ট করছিল যা setAutoCancel()
তাদের পক্ষে কার্যকর হয়নি, তাই আপনিও এইভাবে চেষ্টা করতে পারেন
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
নোট করুন যে পদ্ধতিটি getNotification()
অবচয় করা হয়েছে !!!
আপনি যদি কোনও পরিষেবা থেকে বিজ্ঞপ্তি তৈরি করছেন যা অগ্রভাগে ব্যবহার করে শুরু করা হয়েছে
startForeground(NOTIFICATION_ID, notificationBuilder.build());
তারপরে জারি করা হচ্ছে
notificationManager.cancel(NOTIFICATION_ID);
বিজ্ঞপ্তি বাতিল করা শেষ হয় না এবং বিজ্ঞপ্তিটি এখনও স্ট্যাটাস বারে উপস্থিত হয়। এই বিশেষ ক্ষেত্রে, আপনার ইস্যু করা প্রয়োজন
stopForeground( true );
পরিষেবাটির মধ্যে থেকে এটিকে আবার ব্যাকগ্রাউন্ড মোডে রাখতে এবং একই সাথে বিজ্ঞপ্তিগুলি বাতিল করতে। পর্যায়ক্রমে, আপনি বিজ্ঞপ্তিটি বাতিল না করে পটভূমিতে ঠেলাতে পারেন এবং তারপরে বিজ্ঞপ্তিটি বাতিল করতে পারেন।
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
// Get a notification builder that's compatible with platform versions
// >= 4
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSound(soundUri);
builder.setAutoCancel(true);
আপনি যদি কোনও বিজ্ঞপ্তি নির্মাতা ব্যবহার করে থাকেন তবে এটি কাজ করে ...
আমি বিশ্বাস করি অ্যান্ড্রয়েডএক্স এবং পশ্চাদপটে সামঞ্জস্যের জন্য সর্বাধিক সাম্প্রতিক ও আপডেটেড । করার সেরা উপায় (কোটলিন এবং জাভা) এটি করা উচিত:
NotificationManagerCompat.from(context).cancel(NOTIFICATION_ID)
বা সমস্ত বিজ্ঞপ্তি বাতিল করতে হয়:
NotificationManagerCompat.from(context).cancelAll()
অ্যান্ড্রয়েডএক্স বা সহায়তা গ্রন্থাগারগুলির জন্য তৈরি।
প্রকৃতপক্ষে এপিআই লেভেল 18 দিয়ে শুরু করার আগে উত্তর হিসাবে আপনি অন্য অ্যাপ্লিকেশন দ্বারা পোস্ট করা বিজ্ঞপ্তিগুলি নোটিফিকেশনলিস্টনার সার্ভিস ব্যবহার করে আপনার নিজের চেয়ে আলাদা করতে পারেন তবে সেই পদ্ধতিটি ললিপপটিতে আর কাজ করবে না, এখানে লিলিপপ এপিআই-কেও বিজ্ঞপ্তি মুছে ফেলার উপায়।
if (Build.VERSION.SDK_INT < 21) {
cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
cancelNotification(sbn.getKey());
}
cancelNotification
কী?
সমস্ত বিজ্ঞপ্তি (এমনকি অন্যান্য অ্যাপ সূচনা) হিসেবে উল্লেখ করা 'NotificationListenerService' থেকে শোনা মাধ্যমে মুছে ফেলা হতে পারে NotificationListenerService বাস্তবায়ন
পরিষেবাটিতে আপনাকে কল করতে হবে cancelAllNotifications()
।
আপনার অ্যাপ্লিকেশনটির জন্য পরিষেবাটি এর মাধ্যমে সক্ষম করতে হবে:
'অ্যাপস এবং বিজ্ঞপ্তিগুলি' -> 'বিশেষ অ্যাপ্লিকেশন অ্যাক্সেস' -> 'বিজ্ঞপ্তি অ্যাক্সেস'।
এই কোডটি আমার পক্ষে কাজ করেছে:
public class ExampleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = 1;
notificationManager.cancel(notificationId);
}
}