অ্যান্ড্রয়েড: বিজ্ঞপ্তি বার থেকে বিজ্ঞপ্তি সরান


166

আমি একটি অ্যাপ্লিকেশন তৈরি করেছি এবং একটি ইভেন্টের সাথে আমি অ্যান্ড্রয়েড বিজ্ঞপ্তি বারে বিজ্ঞপ্তি যুক্ত করতে পরিচালনা করি। এখন আমার নমুনা দরকার কীভাবে কোনও ইভেন্টের নোটিফিকেশন বার থেকে সেই বিজ্ঞপ্তিটি সরিয়ে নেওয়া যায় ??



উত্তর:


182

এটি বেশ সহজ। আপনাকে কল করতে হবে cancelবা cancelAllআপনার নোটিফিকেশন ম্যানেজারে যেতে হবে। বাতিল পদ্ধতির পরামিতি হ'ল নোটিফিকেশনটির আইডি যা বাতিল করা উচিত।

এপিআই দেখুন: http://developer.android.com/references/android/app/NotificationsManager.html#cancel(int)


ধন্যবাদ রফলকপ্ট্র :) এটি আমি এখানে পেয়েছি: stackoverflow.com/questions/2839727/…
নেজির

3
প্রাইভেট স্ট্যাটিক ফাইনাল ইন MY_NOTIFICATION_ID = 1234; স্ট্রিং এনএস = প্রসঙ্গ NNOTIFICATION_SERVICE; নোটিফিকেশন ম্যানেজার এমনিটিফিকেশন ম্যানেজার; mNotificationsManager = (নোটিফিকেশন ম্যানেজার) getSystemS सर्विस (এনএস); mNotificationsManager.notify (MY_NOTIFICATION_ID, বিজ্ঞপ্তি); উদাহরণ কোডটি সম্পূর্ণ নয়। এটি নির্ভর করে যে আপনি কীভাবে আপনার বিজ্ঞপ্তি তৈরি করেছেন। আপনার বিজ্ঞপ্তিটি তৈরি করার সময় আপনি যেমনটি ব্যবহার করেছিলেন তেমন নীতিমালা বাতিল করতে আপনি একই আইডিটি ব্যবহার করেছেন তা নিশ্চিত করুন। বাতিল করতে: এমনিটিফিকেশন ম্যানেজার.ক্যান্সেল (MY_NOTIFICATION_ID);
নেজির

আপনি দিনটিকে বাঁচিয়েছেন !, আপনার মতো লোকদের পড়তে পেরে আনন্দিত, যদিও তারা জটিল সমস্যার জটিল উত্তর না হলেও আপনার মতো লোকেরা আমাদের কঠিন সময়ে আমাদের অনেক সহায়তা করে। আপনাকে অনেক ধন্যবাদ.
ই-তথ্য 128

পাবলিক অকার্যকর delNoti (int- আইডি) {((NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE)) বাতিল (ID);।}
phnghue

1
সিস্টেম দ্বারা নির্মিত যা বিজ্ঞপ্তি সম্পর্কে কি?
জায়েদ মির্জা

219

আপনি এই দ্রুত কোড চেষ্টা করতে পারেন

public static void cancelNotification(Context ctx, int notifyId) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
    nMgr.cancel(notifyId);
}

19
এটি সঠিক উত্তর হওয়া উচিত কারণ এটি সহজ, সঠিক এবং সরাসরি পয়েন্টে পৌঁছে।
জিরোটেক

1
হাই এই সঠিক উত্তর। তবে বিজ্ঞপ্তি ট্রে দৃশ্যমান থাকে। এটি লুকানোর কোনও উপায় আছে কি? উদাহরণস্বরূপ, বিজ্ঞপ্তির সাথে আমার দুটি ক্রিয়া জড়িত রয়েছে: বাতিল এবং সম্পন্ন। যখন এই কোনও পদক্ষেপ নেওয়া হয় আমি বিজ্ঞপ্তিটি সরিয়ে দিচ্ছি। তবে এটি করার ফলে এটি কেবলমাত্র বিজ্ঞপ্তি সরিয়ে দেয় তবে বিজ্ঞপ্তি ট্রেটি দৃশ্যমান থাকে।
শজিল আফজাল

1
1 লাইন, কেবলমাত্র নোটিফিকেশন আইডিতে কল করুন: পাবলিক অকার্যকর ডেলনোটি (ইনড আইডি) {((নোটিফিকেশন ম্যানেজার) getSystemService (প্রসঙ্গ .NOTIFICATION_SERVICE)) বাতিল করুন (আইডি);
ph

আপনার সিটিএক্স দরকার নেই নোটিফিকেশন ম্যানেজার এনএমজিআর = (নোটিফিকেশন ম্যানেজার) গেটসিসটেম সার্ভিস (কনটেক্সট.নোটাইফিকেশন_সার্ভিসেস);
ক্যানব্যাক্স

61

আপনি cancelAllবিজ্ঞপ্তি পরিচালককেও কল করতে পারেন , যাতে আপনাকে বিজ্ঞপ্তি আইডির বিষয়েও চিন্তা করতে হবে না।

NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();

সম্পাদনা: আমি হ্রাস পেয়েছি তাই সম্ভবত আমার উল্লেখ করা উচিত যে এটি কেবলমাত্র আপনার অ্যাপ্লিকেশন থেকে বিজ্ঞপ্তি সরিয়ে ফেলবে।


অগ্রভাগের জন্য কোনও বিজ্ঞপ্তি পরিচালক নেই:startForeground(NOTIFICATION_ID, mNotification);
ব্যবহারকারীর ২৪

12

কেবলমাত্র নিম্নলিখিত কোডের মতো সেটআউটোক্যান্সেল (ট্রু) সেট করুন:

Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);

PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
                GameLevelsActivity.this,
                0,
                resultIntent,
                PendingIntent.FLAG_UPDATE_CURRENT
                );

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        getApplicationContext()).setSmallIcon(R.drawable.icon)
        .setContentTitle(adv_title)
        .setContentText(adv_desc)
        .setContentIntent(resultPendingIntent)
         //HERE IS WHAT YOY NEED:
        .setAutoCancel(true);

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`

3
আপনি যদি সরাসরি বিজ্ঞপ্তিতে ট্যাপ করেন তবে এটি কাজ করে। অ্যাকশনটিতে ট্যাপ করা (যেমন এখানে: pl.vc/1gvrli ) বিজ্ঞপ্তিটি সরিয়ে দেয় না।
বারিস 1892

এটি জিজ্ঞাসা করা হয় না। প্রশ্ন: "আমার কীভাবে কোনও ইভেন্টের বিজ্ঞপ্তি বার থেকে সেই বিজ্ঞপ্তিটি সরিয়ে ফেলতে হবে তার নমুনা দরকার ??"
ডেভিড

12

এইটা সাহায্য করবে:

NotificationManager mNotificationManager = (NotificationManager)
            getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();

এটি অ্যাপ্লিকেশন দ্বারা তৈরি সমস্ত বিজ্ঞপ্তি অপসারণ করা উচিত

এবং যদি আপনি কল করে কোনও বিজ্ঞপ্তি তৈরি করেন

startForeground();

একটি পরিষেবা ভিতরে। আপনি কল করতে হতে পারে

stopForeground(false);

প্রথমে নোটিফিকেশন বাতিল করুন।


সম্ভব হলে এই প্রশ্নের উত্তরও দিতে পারবেন? আপনার পরামর্শ অনুসারে আমিও তাই করেছি, তবে এটি অ্যান্ড্রয়েড 10 এ আমার পক্ষে কাজ করছে না প্রশ্নের জন্য এখানে ক্লিক করুন
মৌলিক দোদিয়া

7

আপনি যদি এমন কোনও পরিষেবা থেকে বিজ্ঞপ্তি তৈরি করছেন যা অগ্রভাগে ব্যবহার করে শুরু করা হয়েছে

startForeground(NOTIFICATION_ID, notificationBuilder.build());

তারপরে জারি করা হচ্ছে

notificationManager.cancel(NOTIFICATION_ID);

বিজ্ঞপ্তি বাতিল করার কাজ করে না এবং বিজ্ঞপ্তিটি এখনও স্ট্যাটাস বারে উপস্থিত হয়। এই বিশেষ ক্ষেত্রে, আপনি এটি 2 উপায়ে সমাধান করবেন:

1> পরিষেবাটির অভ্যন্তরে স্টপফোরগ্রাউন্ড (মিথ্যা) ব্যবহার করা:

stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);

2> কলিং ক্রিয়াকলাপ সহ সেই পরিষেবা শ্রেণিটি ধ্বংস করুন:

Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
    ServiceCallingActivity.activity.finish();
}
context.stopService(i);

দ্বিতীয় উপায় সঙ্গীত প্লেয়ার বিজ্ঞপ্তি বেশি পছন্দ কারণ থাই উপায় না শুধুমাত্র বিজ্ঞপ্তি সরান, প্লেয়ার এছাড়াও সরান ... !!


আপনার উত্তরের জন্য ধন্যবাদ! ব্যবহার stopForeground(true); manager.cancelAll();কি এটা আমার জন্য মীমাংসিত!
চেনশুইলুক

3

দয়া করে এটি চেষ্টা করুন,

public void removeNotification(Context context, int notificationId) {      
    NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    nMgr.cancel(notificationId);
}

সম্ভব হলে এই প্রশ্নের উত্তরও দিতে পারবেন? আপনার পরামর্শ অনুসারে আমিও তাই করেছি, তবে এটি অ্যান্ড্রয়েড 10 এ আমার পক্ষে কাজ করছে না প্রশ্নের প্রশ্নের জন্য এখানে ক্লিক করুন
মৌলিক ডোডিয়া

2

আপনার বিজ্ঞপ্তি বাতিল করতে নোটিফিকেশন ম্যানেজারটি ব্যবহার করুন। আপনার কেবলমাত্র আপনার বিজ্ঞপ্তি আইডি সরবরাহ করতে হবে

mNotificationManager.cancel (YOUR_NOTIFICATION_ID);

এই লিঙ্কটিও দেখুন বিকাশকারী লিঙ্কটি দেখুন


2

NotificationManager.cancel(id)সঠিক উত্তর। তবুও আপনি পুরো বিজ্ঞপ্তি চ্যানেলটি মোছার মাধ্যমে অ্যান্ড্রয়েড ওরিও এবং পরে বিজ্ঞপ্তিগুলি সরাতে পারেন । এটি মুছে ফেলা চ্যানেলের সমস্ত বার্তা মুছে ফেলা উচিত।

এখানে অ্যান্ড্রয়েড ডকুমেন্টেশন থেকে উদাহরণ দেওয়া হয়েছে :

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);

1

অ্যান্ড্রয়েড এপিআই> = ২৩ এ আপনি কোনও ধরণের বিজ্ঞপ্তি মুছে ফেলতে এরকম কিছু করতে পারেন।

  for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
        if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
            mNotificationManager.cancel(statusBarNotification.getId());
        }
    }

0

কেবল আইডি কল করুন:

public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.