2013-02-22 7 views
18

मैं एक अधिसूचना दिखाने की कोशिश कर रहा हूं जिसे उपयोगकर्ता को टैप करते समय हटाया जाना है। मैं अपनी अधिसूचना बनाने के लिए NotificationCompat कक्षा का उपयोग कर रहा हूं और मैं पर अपने पर कॉल करता हूं। इस कोड का टुकड़ा है:अधिसूचना सेटऑटोकैंकल (सत्य) काम नहीं करता

NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(this) 
     .setSmallIcon(R.drawable.ic_launcher) 
     .setContentTitle("title") 
     .setAutoCancel(true) 
     .setContentText("content"); 
    NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0, mBuilder.build()); 

अधिसूचना सही ढंग से जोड़ा जाता है लेकिन जब मैं उस पर टैप कुछ नहीं होता! मैं कहाँ गलत हूँ?

+0

अधिसूचना बस वहां रहती है? क्या होता है जब आप इसे खारिज करने के लिए इसे स्वाइप करते हैं? आप किस डिवाइस और एपीआई संस्करण चल रहे हैं? –

+0

मैं गैलेक्सी नेक्सस, एपीआई 4.2.2 पर चल रहा हूं। अधिसूचना गायब हो जाती है अगर मैं इसे स्वाइप करता हूं, लेकिन अगर मैं बस इसे टैप करता हूं तो कुछ भी नहीं होता है। – TheModularMind

उत्तर

41

setContentIntent का उपयोग करते हुए अपनी समस्या को हल करना चाहिए:

.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0)); 

अपने उदाहरण में:

NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(this) 
     .setSmallIcon(R.drawable.notification_icon) 
     .setContentTitle("title") 
     .setAutoCancel(true) 
     .setContentText("content") 
     .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0)); 
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
notificationManager.notify(0, mBuilder.build()); 

अक्सर आप प्रासंगिक सामग्री के उपयोगकर्ता को चाहते हो सकता है और इसलिए 'नए आशय की जगह हो सकता है() 'कुछ और के साथ।

मैंने जिथब में demo अपलोड किया।

+2

यह उत्तर क्यों दिया गया है? यह पूछता है कि सवाल क्या पूछता है! धन्यवाद, यह मेरे लिए काम किया। –

+0

धन्यवाद। हालांकि उपयोगकर्ता अभी भी इसे स्वाइप करके अधिसूचना को दूर कर सकता है। – gatopeich

+0

मुझे पता चला है कि यह काम करता है, लेकिन यह एक विशेष अप्रत्याशित परिणाम का कारण बन सकता है: मैं अधिसूचना से अलग सामग्री सामग्री भी खोलता हूं। यह अधिसूचना की आवाज को स्वचालित रूप से रद्द कर सकता है (Google पिक्सेल पर यह मोटो जी 3 पर करता है) यह नहीं करता है। – jobbert

17

मुझे पता है कि एक उत्तर पहले से ही स्वीकार कर लिया गया है, लेकिन मुझे एक अलग समाधान के साथ एक ही समस्या थी इसलिए मैं इसे यहां साझा करूंगा।

मेरे लिए, मैं एक NotificationCompat.Builder ऑब्जेक्ट का उपयोग कर रहा था जो अधिसूचना बनाने के लिए setOngoing(true) कहलाता था। यह एक अपलोड प्रगति अधिसूचना के लिए था जिसे काम करते समय हटाया नहीं जाना चाहिए।

वैसे भी, कार्य पूरा होने के बाद, मैंने setAutoCancel(true) कहा लेकिन अधिसूचना अभी भी स्वाइप नहीं कर रही थी। मुझे क्या करना था setOngoing(false) पर कॉल किया गया था।

अब यह बहुत स्पष्ट प्रतीत होता है, लेकिन यह भविष्य में किसी और को बचा सकता है।

+0

कृपया, अगर आपको अपनी समस्या का समाधान मिल गया है - –

+0

को हल करने के लिए सही तरीका लिखें, मुझे एक ही समस्या का अनुभव है, आपने मेरा दिन बचाया है! – SalutonMondo

+0

thnks दोस्त hhhhhhhhh :) – Shikhar

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