2011-10-23 10 views
6

से एंड्रॉइड शो अधिसूचना मेरे पास एक क्लास है जो ब्रॉडकास्ट रिसीवर को बढ़ाती है जिसे जब भी नया वाईफाई स्कैन परिणाम उपलब्ध होते हैं (रिसीवर स्टेन_ रिसेट्स के इरादे-फ़िल्टर के रूप में प्रसारित होता है) के साथ प्रकट होता है।ब्रॉडकास्ट रिसीवर

इस कक्षा से, मैं उपयोगकर्ता को एक सूचना दिखाने में सक्षम होना चाहता हूं। वर्तमान में, मैं उस संदर्भ को पास करता हूं जो किसी अन्य वर्ग की "सूचना अधिसूचना" विधि के लिए मेरे प्रसारण उद्देश्य वर्ग की ऑनसेसिव विधि में पैरामीटर के रूप में प्राप्त होता है।

जब यह लाइन के लिए हो जाता है:

myNotificationManager.notify(notificationId, notification); 

यह निम्न अपवादों के साथ विफल रहता है:

java.lang.IllegalArgumentException: contentView required: pkg=com.mumfordmedia.trackify id=2131034122 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0) 

किसी भी विचार क्यों यह हो रहा है? मैं बस इतना सोच सकता हूं क्योंकि संदर्भ जो मैं ऑनसेसिव पैरामीटर से प्राप्त कर रहा हूं वह नहीं है ... बेहतर वाक्यांश की कमी के लिए, "नौकरी के लिए सही" ...

कोई विचार? धन्यवाद, अधिकतम।

+1

शायद यह http://stackoverflow.com/questions/2826786/pendingintents-in-notifications में मदद मिलेगी। वैसे भी, हमें और कोड दिखाएं ताकि हम मदद कर सकें। – Jong

+2

कृपया हमें अपना कुछ कोड दिखाएं ताकि हम क्या हो रहा है इसके बारे में एक बेहतर विचार प्राप्त कर सकें। –

+0

वैसे, Stackoverflow में आपका स्वागत है! यदि आप एक प्रतिक्रिया सहायक हैं, तो इसे अपील करें। अगर प्रतिक्रिया सफलतापूर्वक आपको प्रश्न का उत्तर देती है तो कृपया जवाब स्वीकार करने के लिए इसके आगे के हरे रंग के चेक चिह्न पर क्लिक करें। –

उत्तर

0

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

+0

मैंने ऐप में कहीं और से अधिसूचना स्क्रिप्ट कॉपी और चिपकाया जहां यह काम करता है।कोई सामग्री दृश्य उपलब्ध नहीं है क्योंकि इसे उस क्लास से सक्रिय किया जा रहा है जो ब्रॉडकास्ट रिसीवर को बढ़ाता है जिसमें कोई लेआउट नहीं है। इसे सामग्री दृश्य की आवश्यकता क्यों है? मैं कुछ घंटों में प्रलेखन की समीक्षा करूंगा ... उत्तर के लिए धन्यवाद btw –

2

सुनिश्चित नहीं हैं कि वास्तव में क्यों यह पहले से काम कर रहा था, लेकिन यहाँ कोड मैं इसके साथ काम कर रहे हो गया है:

किसी भी विधि के निम्नलिखित बाहर घोषित:

int YOURAPP_NOTIFICATION_ID = 1234567890; 
NotificationManager mNotificationManager; 

फिर onReceive विधि में फोन निम्नलिखित :

:

mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
showNotification(context, R.drawable.icon, "short", false); 

तो निम्नलिखित प्रणाली की घोषणा

+0

यह कोड मेरे लिए चलाया गया है। धन्यवाद :) – IRvanFauziE

2

आपको Notification.setLatestEventInfo() को कॉल करना होगा।

1

अपनी अधिसूचना

Intent intent = new Intent(this, MusicDroid.class); 
PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); 
notification.setLatestEventInfo(this, "This is the title", 
    "This is the text", activity); 
notification.number += 1; 

nm.notify(NOTIFY_ID, notification); 
14

contentView के साथ इस कोड का प्रयोग करें दृश्य जो जब अधिसूचना क्लिक किया जाता है आवश्यक है। नीचे दिया गया कोड ठीक काम करता है और setLatestEventInfo() आवश्यक विधि है।

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, 
      "Hello from service", System.currentTimeMillis()); 
    Intent intent = new Intent(this, MainActivity.class); 
    notification.setLatestEventInfo(this, "contentTitle", "contentText", 
      PendingIntent.getActivity(this, 1, intent, 0)); 
    manager.notify(111, notification); 
+1

+1: setLatestEventInfo() का उपयोग कर त्रुटि को दूर करने का कारण बनता है। यह बहुत ही परेशान है कि इस तरह की एक सरल अधिसूचना प्रदर्शित करने के लिए कितनी कोड लेती है ... – ArtOfWarfare

0

जो लोग NotificationCompat उपयोग कर रहे हैं के लिए, निम्न कोड काम करेगा:

NotificationCompat.Builder n = new NotificationCompat.Builder(this) 
    .setSmallIcon(R.drawable.icon).setContentText("Notify Title").setContentText("Sample Text"); 
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Intent i = new Intent(this,MainActivity.class); 
    PendingIntent ac = PendingIntent.getActivity(this, 0, i, 0); 
    n.setContentIntent(ac); 
    nm.notify(12222, n.build());