2015-06-24 4 views
6

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

मुझे पता चला कि status bar सेवा का उपयोग सेवा को खोलने/बंद करने के लिए किया जा सकता है। लेकिन यह सिस्टम ऐप्स के लिए प्रतिबंधित है।

private void closeNotificationTray() { 
     Object service = mContext.getSystemService(Context.STATUS_BAR_SERVICE); 
     Method collapse; 
     try { 
      Class<?> statusBarMngr = Class.forName("android.app.StatusBarManager"); 
      if (Build.VERSION.SDK_INT >= 17) 
       collapse = statusBarMngr.getMethod("collapsePanels"); 
      else 
       collapse = statusBarMngr.getMethod("collapse"); 
      collapse.invoke(service); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (NoSuchMethodException e) { 
      e.printStackTrace(); 
     } catch (InvocationTargetException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } 

मैंने उपरोक्त कोड का उपयोग किया। लेकिन मुझे "STATUS_BAR_SERVICE हल नहीं किया जा सकता" त्रुटि मिल रही है। और जब मैं प्रकट में नीचे permision कहा:

<uses-permission 
     android:name="android.permission.STATUS_BAR" /> 

मैं हो रही है, केवल प्रणाली apps.It मुझे मेरी अनुप्रयोग में उपयोग करने की अनुमति नहीं है के लिए अनुमति दी। status bar सेवा या किसी अन्य विकल्प का उपयोग करने का कोई तरीका है?

अद्यतन:

मैं कोड के सिर्फ 2 लाइनों के साथ ऊपर समस्या हल हो जाती। STATUS_BAR_SERVICE को कॉल करने की कोई आवश्यकता नहीं है।

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
    mContext.sendBroadcast(it); 

इस आशय स्वचालित रूप से अधिसूचना

+2

ऊपर कोशिश कर सकते हैं मैं इस मुद्दे को हल किया। समाधान –

+0

के लिए अद्यतन की जांच करें, आप अपने अपडेट पर भरोसा नहीं कर सकते। वास्तविक सिस्टम स्तर संवाद कब होता है तो क्या होता है? मेरे पास एक सिस्टम स्तरीय संवाद खुला था और इसे बंद कर दिया। –

उत्तर

0

हाँ, यह अनुमति "android.permission.STATUS_BAR" केवल सिस्टम एप्लिकेशन में उपलब्ध, तृतीय पक्ष ऐप्स के लिए नहीं है बंद कर देता है होगा कॉलिंग।

आप विधि नीचे की कोशिश कर सकते हैं:

  1. इसे में लंबित आशय पास करके कुछ अधिसूचना बनाएँ।
  2. कार्रवाई के रूप में साझा के साथ लंबित इरादा बनाएँ। अब आप शेयर विकल्प का उपयोग करने में सक्षम होंगे।

@Amanda फर्नांडीज आप विधि

+0

यदि मैं itnet लंबित शेयर बटन पर FLAG_CANCEL_CURRENT ध्वज सेट करता हूं, तो यह ट्रे से आइटम को साफ़ कर देगा। मैं इसे ट्रे में रहना चाहता हूं और इसे केवल तभी साफ़ किया जाना चाहिए जब उपयोगकर्ता इसे चुनता हो। –

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