नोटिफिकेशन पर क्लिक करने के बाद एंड्रॉइड नोटिफिकेशन गायब नहीं होता है


133

अगर अधिसूचना के साथ कुछ समस्याएं मिलीं तो मैं अधिसूचना बार में दिखाना चाहता हूं। हालाँकि, मैंने सूचना फ़्लैग को अधिसूचना पर सेट कर दिया है Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL, इसे क्लिक करने के बाद गायब नहीं होता है। किसी भी विचार मैं गलत क्या कर रहा हूँ?

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

    int icon = R.drawable.icon;
    CharSequence tickerText = "Ticker Text";
    long time = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, time);
    notification.flags = Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL; 

    Context context = getApplicationContext();
    CharSequence contentTitle = "Title";
    CharSequence contentText = "Text";
    Intent notificationIntent = new Intent(this, SilentFlipConfiguration.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
    mNotificationManager.notify(1,notification);

जवाबों:


305

आप Notificationद्वारा निर्माण करते समय NotificationBuilderउपयोग कर सकते हैं notificationBuilder.setAutoCancel(true);


2
तो, क्या अधिसूचनाएँ अधिसूचना का उपयोग करके mNotificationManager.notify(1,notification);और NotificationBuilder का उपयोग करके अंतर पैदा करती हैं mNotificationManager.notify(1, mBuilder.build());? धन्यवाद।
योहन एआई

9
यह उत्तर स्वीकार किया जाना चाहिए, यह वर्तमान एंड्रॉइड डिज़ाइन सिद्धांत के साथ अधिक इन-लाइन है
jmaculate

यह उत्तर सही है। एक काम को स्वीकार किया लेकिन हमेशा नहीं। GCM (या जो भी आप उपयोग कर रहे हैं) पर स्टैक्ड नोटिफिकेशन होने पर समस्या होती है। एक बार जब आप अधिसूचना सर्वर को पिंग करते हैं, तो यह बहुत अधिक सूचनाओं के साथ वापस आ जाता है और कभी-कभी यह केवल अधिसूचना उपस्थिति को लूप करता है।
निकोला मिलुतिनोविक

5
notificationBuilder.setAutoCancel(true);मेरे लिए काम नहीं कर रहा है। क्या मुझे अपने लंबित इरादे से पहले रखना चाहिए?
काइरी सैन

129
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL

प्रलेखन से:

बिटवाइस होने के लिए बिट- या झंडे फ़ील्ड में एड करें जो कि उपयोगकर्ता द्वारा क्लिक किए जाने पर अधिसूचना को रद्द कर दिया जाना चाहिए।


3
यह सही उत्तर नहीं है। वर्ग Notification.DEFAULT_LIGHTSका हिस्सा है, Notification.defaultsवर्ग का नहीं Notification.flags। उपयुक्त वासियों के लिए मेरा उत्तर देखें।
डार्सी

नोटिफिकेशन.फ्लैग्स = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; यह विधि काम कर रही है, धन्यवाद।
रविकुमार ११

1
इस उत्तर में कोड के परिणामस्वरूप अधिसूचना ध्वनि कई बार बजाया जा रहा है। अन्य उत्तरों की जाँच करें।
प्रतिबंध-जियोइंजीनियरिंग

27
// Uses the default lighting scheme
notification.defaults |= Notification.DEFAULT_LIGHTS;

// Will show lights and make the notification disappear when the presses it
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;

1
मैं एंड्रॉइड डॉक्स के माध्यम से चला गया हूं। जब झंडे का इस्तेमाल किया जाना चाहिए तो मुझे बहुत नहीं मिलता। लाइट्स दिखाने के लिए सिर्फ notification.defaults = notification.DEFAULT_LIGHTS ही क्यों पर्याप्त नहीं है। क्योंकि ध्वज के बिना कंपन और ध्वनि काम करती है।
अश्विन

NotificationBuilder, NotificationCompat.Builder mBuilder = new NotificationCompat.Builder (यह) .setSmallIcon (android.R.drawable.ic_popup_sync) .setContentTitle ("नया ट्वीट") .setContentText ("+" + "+") का उपयोग कर रहा हूं। ; mBuilder.setDefaults (NotificationCompat.DEFAULT_LIGHTS | अधिसूचना। LAG_AUTO_CANCEL);
जोसेफ



1

ध्वज अधिसूचना का उपयोग करें। LAG_AUTO_CANCEL

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

// Cancel the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

और एप्लिकेशन लॉन्च करने के लिए:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Intent intent = new Intent(context, App.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

0

एक अधिसूचना निकालें

निम्न में से एक होने तक सूचनाएं दिखाई देती हैं:

  1. उपयोगकर्ता अधिसूचना को खारिज कर देता है।
  2. जब आप अधिसूचना तैयार करते हैं, तो उपयोगकर्ता अधिसूचना पर क्लिक करता है, और आपने setAutoCancel () को कॉल किया।
  3. आप एक विशिष्ट अधिसूचना आईडी के लिए रद्द () कहते हैं। यह विधि चल रहे सूचनाओं को भी हटा देती है।
  4. आप CancelAll () को कॉल करते हैं, जो आपके द्वारा पहले जारी किए गए सभी सूचनाओं को हटा देता है।
  5. यदि आप setTimeoutAfter () का उपयोग करके एक अधिसूचना बनाते समय एक टाइमआउट सेट करते हैं, तो सिस्टम निर्दिष्ट अवधि के अंतराल के बाद अधिसूचना को रद्द कर देता है। यदि आवश्यक हो, तो आप निर्दिष्ट टाइमआउट अवधि समाप्त होने से पहले एक अधिसूचना रद्द कर सकते हैं।

अधिक जानकारी के लिए देखें: https://developer.android.com/training/notify-user/build-notification?hl=hi

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.