2013-03-22 3 views
15

पर क्लिक करें मैंने स्टैक ओवरफ्लो के माध्यम से ब्राउज़ किया है और देखा है कि यह प्रश्न पूछा गया है, लेकिन मुझे कोई समाधान नहीं मिला।अधिसूचना बटन के बाद स्टेटस बार/अधिसूचना पैनल को कैसे बंद करें

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

Notification notification = new Notification(R.drawable.icon, "Service running", System.currentTimeMillis()); 
notification.flags |= Notification.FLAG_ONGOING_EVENT; 
notification.contentIntent = openIntent; 
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_layout); 


contentView.setOnClickPendingIntent(R.id.button1, stopIntent); 
contentView.setOnClickPendingIntent(R.id.button2, addIntent); 

notification.contentView = contentView; 

notificationManager.notify(NOTIFICATION_ID, notification); 
+0

http://stackoverflow.com/a/6435373/115145 बटन है कि यह आपके 'minSdkVersion' है का समर्थन कर रहे एपीआई स्तर 11 के रूप में तुम मेरी अब हटाए गए जवाब पर अपनी टिप्पणी में संकेत दिया है, और इसलिए आप ठीक होना चाहिए, हालांकि मुझे नहीं पता कि दराज को कैसे बंद किया जाए। मेरी गलती के लिए मेरी माफ़ी - मैं भूल गया था कि उन्होंने आधिकारिक तौर पर इसका समर्थन करना शुरू कर दिया था। – CommonsWare

+0

एनपी, शायद मुझे पहले उल्लेख करना चाहिए था कि मेरा minSdkVersion = 11 ;-) –

उत्तर

1

ठीक है, मैं समाधान मिल गया है:

यहाँ मेरी अधिसूचना कोड है। यह सार्वजनिक एपीआई नहीं है, लेकिन यह (पल के लिए) काम करता है:

Object sbservice = c.getSystemService("statusbar"); 
        Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); 
        Method hidesb = statusbarManager.getMethod("collapse"); 
        hidesb.invoke(sbservice); 

इसके लिए काम करने के लिए

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

+0

यहां सी क्या है? और यह कोड क्या करेगा? –

+0

@iDroidExplorer: सी संदर्भ है। और, जैसा कि मेरे प्रश्न में पूछा गया है, यह कोड विस्तारित अधिसूचना बार पैनल को बंद करने में सक्षम है। मैं अपनी कस्टम अधिसूचना –

+1

का एक बटन दबाए जाने के बाद कोड के उस टुकड़े का उपयोग करता हूं और अधिक पूरा उत्तर http://stackoverflow.com/a/16978341/506724 – falko

74

की जरूरत है सूचना पट्टी संक्षिप्त करने के लिए निम्न दो कोड लाइन का प्रयोग करें।

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
context.sendBroadcast(it); 
+1

यह सही उत्तर है क्योंकि यह कोड निजी API के बिना काम करता है। – CeccoCQ

+0

आपने अपना समय बचाया। धन्यवाद। – BSKANIA

+2

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए .... – prince

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