2015-11-23 50 views
1

我想創建一個通知,我添加按鈕,它會基本上做一些行動。我知道我可以做以下通知與按鈕,點擊採取行動,而不打開活動

NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(con) 
      .setSmallIcon(image) 
      .setContentTitle("title") 
      .addAction(icon, title, intent) 

我的問題是: 1)將在API的支持5.0+ ONLY或也4.x的按鈕?我讀了不同的答案

2)該行爲似乎與打開一項活動相關。有沒有我可以擁有它,所以當你點擊一個按鈕,它需要一個動作,而不必打開活動(通過廣播接收器或其他方式)?據我所知Intent打開活動。

謝謝你這麼多

+0

AFAIK添加一個按鈕,可與API> 11 –

+0

你可以看到[http://stackoverflow.com/questions/18249871/android-notification-buttons-not-showing這個 – luffynas

+0

是的,你可以做一些沒有公開活動的動作,你可以使用透明活動來實現它 –

回答

2
  1. 它會在Android 4.1及更高版本。 See official doc

  2. 如果你想要做出來的動作任何UI更新(即,顯示任何活動),我建議發送掛起意圖(這將引發廣播接收器),作爲通知操作參數

我)創建一個名爲BroadcastReceiverMyBroadcastReceiver
二)增加你的行動在BroadcastReceiver'sonReceive方法
III)創建一個PendingIntent

Intent mIntent = new Intent(this,MyBroadcastReceiver.class); 
PendingIntent mPendingIntent = PendingIntent.getBroadcast(this, 0, mIntent , 0); 

IV)將它添加到通知

NotificationCompat.Builder mBuilder = 
     new NotificationCompat.Builder(con) 
     .setSmallIcon(image) 
     .setContentTitle("title") 
     .addAction(icon, title, mPendingIntent) 
1

1)將在API的支持5.0+ ONLY或也4.x的按鈕?

它將在Android 4.1及更高版本中工作。見official doc

2)...據我所知Intent打開活動。

是的,您可以使用BroadcastReceiver或Service來執行不涉及UI的邏輯。首先,您可以建立啓動活動,廣播接收器或服務的意圖。其次,NoticiationCompat.Builder#addAction的第三個參數是PendingIntent,而不是意圖。例如,您可以使用PendingIntent.getService爲服務創建PendingIntent。

http://developer.android.com/reference/android/app/PendingIntent.html#getService(android.content.Context,INT,android.content.Intent,INT)

相關問題