2011-03-08 10 views
17

मैं अधिसूचना बार में दिखाए गए किसी अन्य एप्लिकेशन से अधिसूचनाओं को हटाना चाहता हूं। क्या यह संभव है? जहां तक ​​मुझे पता है, NotificationManager.cancelAll(); कॉलिंग एप्लिकेशन द्वारा दिखाए गए केवल अधिसूचनाओं को रद्द करता है।अन्य अनुप्रयोगों से अधिसूचना बार से अधिसूचना हटाएं

मैं ऐसा क्यों करना चाहता हूं?

मेरे पास एक ऐसा एप्लिकेशन है जो वेबपृष्ठ के माध्यम से एसएमएस पढ़ता है और भेजता है, और मैं चाहता हूं कि यह एप्लिकेशन मौजूदा एसएमएस एप्लिकेशन जैसे हैंडेंट एसएमएस के साथ सह-निकास करे। जिस तरह से मैं इसे काम करना चाहता हूं वह यह है कि वेबपेज के माध्यम से नए प्राप्त एसएमएस को पढ़ने पर, मैं हैंडेंट एसएमएस द्वारा दिखाए गए नए एसएमएस अधिसूचना को रद्द करना चाहता हूं क्योंकि नया एसएमएस अब पढ़ा गया है। मैं एसएमएस को पढ़ने के रूप में चिह्नित कर रहा हूं, और एक बार जब मैं हैंडेंट एसएमएस खोलता हूं तो हैंडेंट एसएमएस इसे पढ़ने के रूप में पहचानता है, लेकिन जब तक मैं वास्तविक एसएमएस पर क्लिक नहीं करता तब तक अधिसूचना तब भी होती है।

दो सीनियर हैं; संख्या 1:

  1. एंड्रॉइड डिवाइस को एक एसएमएस प्राप्त होता है।
  2. एक सूचना हैडेंट एसएमएस द्वारा दिखाया गया है।
  3. उपयोगकर्ता डिवाइस पर एसएमएस पढ़ता है।
  4. हैंडेंट एसएमएस अधिसूचना को हटा देता है और एसएमएस को पढ़ने के रूप में चिह्नित करता है।

Senario 2:

  1. Android डिवाइस एक एसएमएस प्राप्त करता है।
  2. एक सूचना हैडेंट एसएमएस द्वारा दिखाया गया है।
  3. उपयोगकर्ता वेब इंटरफ़ेस के माध्यम से एसएमएस पढ़ता है।
  4. मेरा आवेदन हैंडेंट एसएमएस द्वारा दिखाए गए नए एसएमएस अधिसूचना को साफ़ करता है और एसएमएस को पढ़ने के रूप में चिह्नित करता है।

क्या यह संभव है?

+0

आप कभी ऐसा क्यों करना चाहते हैं? मैं नहीं चाहता कि कोई ऐप निश्चित रूप से मेरी अधिसूचना चुरा रहा हो। –

+6

अमीर, मैंने आपको बताया कि "मैं ऐसा क्यों करना चाहता हूं?" :)। – johboh

+0

@johboh अब आप अन्य एप्लिकेशन की अधिसूचना रद्द करने में सक्षम हैं। –

उत्तर

4

आप NotificationManager का उपयोग कर अपनी खुद की सूचनाओं को रद्द कर सकते हैं।
लेकिन आप अन्य ऐप्स की सूचनाओं को रद्द नहीं कर सकते हैं, यह संभव नहीं है।

+1

मैं थोड़ा उलझन में हूँ। किसका जवाब वास्तव में सही है? तुम्हारा, या @ ओएसिस फेंग? –

14

Android से 4.3 आगे, अब आप किसी भी ऐप्स से अधिसूचना रद्द कर सकते हैं।

आप NotificationListenerService रूप में अपने अनुप्रयोग रजिस्टर करने के लिए तो NotificationListenerService.cancelNotification(String pkg, String tag, int id) फोन एक अधिसूचना को रद्द करने की जरूरत है।

+2

ध्यान दें कि अधिसूचना लिस्टनर सेवा का उदाहरण बनाना और रद्द करना नोटिफिकेशन() को न्यूलपॉन्टर अपवाद का परिणाम मिलेगा।आपको अधिसूचना लिस्टनर सेवा का विस्तार करना होगा और सेवा शुरू करना होगा, फिर सेवा के भीतर अधिसूचना रद्द करनी होगी। – black

+0

मैंने इसे ऑनोटेशनपोस्टेड() के अंदर चलाया, लेकिन यह इसे रद्द नहीं कर रहा है। क्या आप कृपया एक नज़र डालें? http://stackoverflow.com/questions/29803218/cant-cancel-notification-using-notificationlistenerservice –

+0

ध्यान दें कि लॉलीपॉप के बाद से यह विधि बहिष्कृत है, यह हस्ताक्षर बदल गया है, क्योंकि @QuadX नीचे उनके उत्तर में नोट किया गया है –

2

आप किसी भी अधिसूचना उपयोग NotificationListenerService बंद कर सकते हैं:

public class NotificationListener extends NotificationListenerService { 

    @Override 
    public void onNotificationPosted(StatusBarNotification sbn) { 
     cancelNotification(sbn.getKey()); 
    } 
} 

आपका आवेदन BIND_NOTIFICATION_LISTENER_SERVICE अनुमति होनी चाहिए। https://developer.android.com/reference/android/service/notification/NotificationListenerService.html

संबंधित मुद्दे