यह मैं कैसे इसे हल है:
असल में, आप अपनी अधिसूचना के साथ एक इरादा बनाते हैं जो IntentService (या कोई अन्य सेवा) शुरू करता है और onHandleIntent
में आप सेट कर सकते हैं एक ध्वज यह इंगित करता है कि अधिसूचना सक्रिय है या नहीं।
उपयोगकर्ता इस अधिसूचना को निकाल सकता है जब उपयोगकर्ता अधिसूचना (contentIntent) और/या जब उपयोगकर्ता सूची से इसे साफ़ करता है (deleteIntent)।
इसे स्पष्ट करने के लिए, मैं अपने स्वयं के ऐप में यही करता हूं। जब अधिसूचना के निर्माण मैं
Intent intent = new Intent(this, CleanupIntentService.class);
Notification n = NotificationCompat.Builder(context).setContentIntent(
PendingIntent.getActivity(this, 0, intent, 0)).build();
सेट करते हैं अधिसूचना उपयोग किया जाता है, मेरी CleanupIntentService
शुरू की है, (जो सूचना बनाई सेवा में) एक ध्वज की स्थापना:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onCreate(); // If removed, onHandleIntent is not called
return super.onStartCommand(intent, flags, startId);
}
@Override
protected void onHandleIntent(Intent intent) {
OtherService.setNotificationFlag(false);
}
स्रोत
2012-09-30 10:12:53
वहाँ कुछ क्या गलत है रहना होगा। जब मैं अपने '' ''रिज्यूमे()' '' विधि में लिखता हूं, तो '' '' (नोटिफिकेशन विज़िबल()) '' '' '' '(' अधिसूचना प्रबंधक) प्राप्त करें सिस्टम सेवा (NOTIFICATION_SERVICE)) रद्द करें (MY_ID); '' 'और उसके बाद' '' खत्म करें(); startActivity (getIntent()); '' 'मुझे एक लूप मिलता है जो मेरे फोन को पुनरारंभ करने की ओर जाता है। तो इस विधि का सावधानी से इलाज किया जाना चाहिए .... – maysi
मेरे लिए काम नहीं कर रहा है। यह हमेशा मेरे लिए सच देता है। – Saket
एंड्रॉइड 4.3 में मेरे लिए काम नहीं किया। अधिसूचना को खारिज करने के बाद 'लंबित इंटेन्टेंट' अटक गया, और पूरे ऐप को मारने के बाद भी। केवल फोन को पुनरारंभ करना इससे छुटकारा पा लिया। साथ ही, 'setLatestEventInfo() 'अब मौजूद नहीं प्रतीत होता है, इसलिए मैंने इसके बजाय' setContentIntent()' का उपयोग किया। – Sam