2016-08-29 11 views
6

से अधिसूचना बार से सभी घटनाओं को स्पष्ट करने के लिए कैसे करें specification के अनुसार, .setDeleteIntent(pendingIntent) दोनों कार्यों से संबंधित है (अधिसूचना बार से सभी घटनाओं को साफ़ करें और स्वाइपिंग जैसी उपयोगकर्ता कार्रवाई)।एंड्रॉइड: उपयोगकर्ता कार्रवाई

मेरी आवश्यकताएं हैं कि जब उपयोगकर्ता अधिसूचना बार पर दिखाई देने वाली अधिसूचना को छूता है, तो उसे NotificationsList.class पर अग्रेषित किया जाना चाहिए। यह मेरा pendingInent साथ किया जाता है:

PendingIntent sendPendingIntent = PendingIntent.getActivity(context, reminderId, new Intent(context, NotificationsList.class), PendingIntent.FLAG_UPDATE_CURRENT); 

हालांकि, साफ़ बटन पर क्लिक पर, उपयोगकर्ता बिल्कुल आवेदन नेविगेट नहीं किया जाना चाहिए। .setDeleteIntent(pendingIndent) के साथ मैं दूसरी आवश्यकता को पूरा नहीं कर सकता। उपयोगकर्ता अभी भी NotificationsList.class पर नेविगेट किया गया है।

क्या CLEAR प्रोग्रामेटिक रूप से पहचानने का कोई तरीका है उपयोगकर्ता सूचनाओं से साफ़ बटन से निकाले गए सभी नोटिफिकेशन ईवेंट जैसे अधिसूचना बार पर विशिष्ट अधिसूचना पर स्पर्श या स्वाइप करें?

+0

आप अपने प्रश्न का जवाब मिल गया था? क्या आपको और मदद चाहिए? यदि आप करते हैं तो कृपया मुझे बताएं! – bendaf

+0

क्या आपको और मदद की ज़रूरत है ब्रो? आप कोई जवाब क्यों स्वीकार नहीं कर रहे हैं? – bendaf

+0

करें यदि आप अपने प्रश्न का उत्तर के नीचे से एक स्वीकार करते हैं, या अपने प्रश्न को संशोधित लगता है तो मैं आप आगे और अधिक मदद कर सकते हैं कर सकते हैं! – bendaf

उत्तर

2

जो आप वर्णन कर रहे हैं वह बहुत ही उलझन में व्यवहार है। आपको केवल अपनी अधिसूचना के लंबित इरादे को सेट करने की आवश्यकता है और जब इसे क्लिक किया जाता है, तो इसका समर्थन करने वाले इरादे को निष्पादित किया जाएगा।

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

ध्यान दें कि जब आप (setContentIntent()) अधिसूचना पर क्लिक करते हैं और (setDeleteIntent()) को स्पष्ट करते हैं तो अधिसूचना मूल रूप से दो लंबित संकेत हैं, वे समान नहीं होनी चाहिए, जो आपकी समस्या का वर्णन कर रही है।

1

आप दो घटनाओं को अलग नहीं कर सकते हैं। documentation कहते हैं:

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

  • उपयोगकर्ता अधिसूचना को खारिज करते हुए अलग-अलग या "सभी को साफ़ करें" (यदि अधिसूचना साफ किया जा सकता) का उपयोग करके।
  • उपयोगकर्ता अधिसूचना पर क्लिक करता है, और आपने अधिसूचना बनाई जब setAutoCancel() कहा जाता है।
  • आप एक विशिष्ट सूचना आईडी के लिए cancel() पर कॉल करें। यह विधि चल रही अधिसूचनाओं को भी हटा देती है।
  • आप cancelAll() पर कॉल करते हैं, जो आपके द्वारा पहले जारी की गई सभी सूचनाओं को हटा देता है।

तो वहाँ मूल रूप से एक प्रोग्रामर को देखते हुए तीन अलग-अलग घटनाओं हैं:

  • आप सूचना
  • उपयोगकर्ता पर
  • उपयोगकर्ता क्लिक अधिसूचना को खारिज करते हुए अधिसूचना (खारिज या तो इसे स्वाइप या साफ़ करके)

पहला कार्यक्रम निकाल दिया गया है cancelAll() या cancel() पर कॉल करके स्वयं द्वारा।

आप की तरह दूसरा (जो आप करना चाहते हैं मुझे लगता है कि है) संभाल कर सकते हैं:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
     //.... 
     .setContentIntent(sendPendingIntent); 

और तुम जैसे किसी तृतीय घटना संभाल कर सकते हैं (जैसा कि आप ऊपर वर्णित है):

builder.setDeleteIntent(pendingIndent) 

मैं उपयोगकर्ता द्वारा आपकी सूचना को खारिज करने के बाद गतिविधि शुरू करने की अनुशंसा न करें, क्योंकि उपयोगकर्ता इसकी अपेक्षा नहीं करेगा और यह एक खराब उपयोगकर्ता अनुभव होगा।

मुझे आशा है कि मैं मदद कर सकता है।

1

design guidelines के अनुसार, उपयोगकर्ता क्लिक, स्वाइप और चुटकी ज़ूम जैसे उच्च स्तरीय संकेतों का उपयोग करके आपकी अधिसूचना के साथ बातचीत करने की उम्मीद कर सकता है। निचले स्तर की घटना के तुरंत जवाब देने जैसे स्पर्श इन इशारे को शॉर्ट सर्किट करेंगे, इसलिए आपकी आवश्यकताएं डिज़ाइन दिशानिर्देशों का उल्लंघन करती हैं और आपको इसे लागू नहीं करना चाहिए।

यदि ऐसा है तो यह है कि उपयोगकर्ता अग्रेषित किया जाता है जब वे नोटिफिकेशन पर क्लिक करने की आवश्यकताओं को बदल रहे हैं, स्वाइप करने और समाशोधन है, जो किसी भी मामले में असंभव है के बीच अंतर करने की कोई जरूरत नहीं है।

तो आपकी समस्या जरूरतों के मामले में एक शब्द बदल कर सुलझाया जाना चाहिए: स्पर्श -> पर क्लिक करें।

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