2011-08-25 17 views
12

मैं एक अधिसूचना जब एक सेवा के माध्यम से AlarmManager शुरू कर दिया है शुरू करने के लिए निम्नलिखित कोड का उपयोग कर रहा:अधिसूचना के लिए क्लिक श्रोता कैसे सेट करें?

nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); 
CharSequence from = "App"; 
CharSequence message = "Getting Latest Info..."; 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), 0); 
Notification notif = new Notification(R.drawable.icon, 
    "Getting Latest Info...", System.currentTimeMillis()); 
notif.setLatestEventInfo(this, from, message, contentIntent); 
nm.notify(1, notif); 

मैं कैसे इस आइटम के लिए आशय स्थापित कर सकता है ताकि जब उस पर उपयोगकर्ता क्लिक करता है, यह एक निश्चित शुरू करेगा गतिविधि?

उत्तर

12

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

// This line of yours should contain the activity that you want to launch. 
// You are currently just passing empty new Intent() 
PendingIntent contentIntent = 
    PendingIntent.getActivity(this, 0, new Intent(this, MyActivity.class), 0); 

+0

क्या आप एक उदाहरण प्रदान कर सकते हैं? – yoshi24

+0

मैंने – momo

+0

को संशोधित करने के लिए आवश्यक प्रासंगिक कोड जोड़ा है, इसके अलावा मैं इसे प्रश्न के बाहर भी जानता हूं, क्या वैसे भी मैं इसके साथ पारित होने के लिए अतिरिक्त सेट कर सकता हूं? – yoshi24

23

yoshi24 की टिप्पणी के लिए के रूप में, आप इस तरह अतिरिक्त सेट करने में सक्षम हो सकता है।

final Intent intent = new Intent(this, MyActivity.class); 
intent.setData(data); 
intent.putExtra("key", "value"); 
final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

आप के रूप में अच्छी तरह से लंबित उद्देश्य

https://stackoverflow.com/questions/1198558/how-to-send-parameters-from-a-notification-click-to-an-activity

अद्यतन के लिए जा रहा इस तरह की कुछ बात के लिए आप

पूर्णांक अपने mainfest

काम करेंगे से पहले इस के बारे में पता करने की आवश्यकता है
<activity android:name=".MyActivity" android:launchMode="singleTop" ... /> 

अपनी गतिविधि में

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    processIntent(getIntent()); 
} 

@Override 
protected void onNewIntent(Intent intent) {  
    processIntent(intent); 
}; 

private void processIntent(Intent intent){ 
    //get your extras 
} 
+0

जिस लिंक को आपने पोस्ट किया है वह लिंक क्या है, जिसे मैं करने की कोशिश कर रहा हूं? – yoshi24

+1

यह वही है जैसा आपने – Samuel

+1

पोस्ट किया है, आपको इरादा ध्वज को ** एंड्रॉइड के रूप में बदलना होगा: लॉन्चमोड = "सिंगल टास्क" ** मैनिफेस्ट में और ओवरराइड ** पर न्यूजेंटेंट (इरादा इरादा) ** गतिविधि के अंदर। यह आपको पैरामीटर प्राप्त करने में सक्षम करेगा। – Samuel

6

मैंने किया,

  • मैं नए इरादे

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, 
         "A new notification", System.currentTimeMillis()); 
    // Hide the notification after its selected 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    
    Intent intent = new Intent(this, NoficationDemoActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    Bundle bundle = new Bundle(); 
    bundle.putString("buzz", "buzz"); 
    intent.putExtras(bundle); 
    PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); 
    notification.setLatestEventInfo(this, "This is the title", 
         "This is the text", activity); 
    notification.number += 1; 
    notificationManager.notify(0, notification); 
    
  • करने के लिए Intent.FLAG_ACTIVITY_CLEAR_TOP जोड़ने onCreate मैं पालन करें:

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    if(getIntent().getExtras()!=null){ 
        Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show(); 
    }