こんにちは、KID.Aです。
Android Mからアプリケーションから呼び出されたNotificaitonManagerでキャンセルやユーザにタップされていない通知の詳細を知ることができるようになりました。
追加されたAPIはNotificaitonManager#getActiveNotificationsで、このAPIで現在の状況が取得できます。
・開発サイトのAPIは以下の通りです。
http://developer.android.com/intl/ja/reference/android/app/NotificationManager.html
実装
簡単なサンプルコードは以下の通りです。
package jp.co.notificationtest; import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.service.notification.StatusBarNotification; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; public class MainActivity extends AppCompatActivity { private NotificationManager mNotificationManager; private int mCount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mNotificationManager = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE); findViewById(R.id.notify).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Notification.Builder builder = new Notification.Builder(MainActivity.this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("title") .setContentText("text") .setAutoCancel(true); final Notification notification = builder.build(); mNotificationManager.notify(++mCount, notification); } }); findViewById(R.id.confirm).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final StatusBarNotification[] activeNotifications = mNotificationManager .getActiveNotifications(); Log.v(MainActivity.class.getName(), "number = " + activeNotifications.length); } }); } }
idがnotifyのボタンを押下するとNotificationを発行して通知をします。
idがconfirmのボタンを押下すると現在のNotificationの数をカウントしてログに出します。
Notificationの数を取得している箇所はNotificaitonManager#getActiveNotifications()になります。
NotificaitonManager#getActiveNotifications()を使用して現在のStatusBarNotificationの一覧が取得できます。
実行
サンプルコードを実行して挙動をみてみます。
アプリを起動します。
notifyボタンを押下して、通知を行います。
その後、confirmボタンを押下すると以下のようなログがでます。
V/jp.co.notificationtest.MainActivity: number = 1
もう一度、notifyボタンを押下して、通知を行います。
その後、confirmボタンを押下すると以下のようなログがでます。
V/jp.co.notificationtest.MainActivity: number = 2
このように通知の状況を知ることができるようになりました。
以上、新たにAndroid Mから使用できるNotificationのAPIの説明でした。