2011-01-31 69 views
9

我有一个应用程序,我想在应用程序运行时向通知栏显示我的应用程序图标,并且我还希望当用户点击通知栏中显示的应用程序图标 我的应用程序将被打开。这个怎么做?请帮忙!从android通知栏中启动应用程序

回答

14

要创建一个状态栏通知,这样做在你onCreate方法:

  1. 获取对NotificationManager参考:

    String ns = Context.NOTIFICATION_SERVICE; 
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 
    
  2. 实例化的通知:

    int icon = R.drawable.notification_icon; 
        CharSequence tickerText = "Hello"; 
        long when = System.currentTimeMillis(); 
    
        Notification notification = new Notification(icon, tickerText, when); 
    
  3. 定义通知的扩展消息和意图:

    Context context = getApplicationContext(); 
        CharSequence contentTitle = "My notification"; 
        CharSequence contentText = "Hello World!"; 
        Intent notificationIntent = new Intent(this, MyClass.class); 
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
    
        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    
  4. 传递通知到NotificationManager:

    private static final int HELLO_ID = 1; 
    
        mNotificationManager.notify(HELLO_ID, notification); 
    

    就是这样。您的用户现在已收到通知。

+0

现在已弃用new Notification()和setLatestEventInfo。查看我的答案或转到谷歌的文档,http://developer.android.com/guide/topics/ui/notifiers/notifications.html,更新的方式来显示通知。 – GLee 2013-12-04 23:05:09

3

几点建议:

  • ,如果你想在通知栏图标,你必须发送一些通知。
  • 通过单击通知图标无法启动应用程序。它可以通过点击通知来启动,如果用户下拉通知栏,则该通知将可用。为此,您需要创建PendingIntent。
7

已接受的答案已弃用。以下是从google的documentation显示对话框的方法。

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable 
      .logo_listy).setContentTitle("My notification").setContentText("Hello World!"); 

    Intent resultIntent = new Intent(this, ResultActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(ResultActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = 
      stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(resultPendingIntent); 

    NotificationManager mNotificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(0, mBuilder.build()); 
+0

工程太棒了。可能有助于某人使其成为“持续”通知:通知noti = mBuilder.build(); noti.flags = Notification.FLAG_ONGOING_EVENT; – Artur 2014-02-20 00:58:44