2011-01-31 67 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