[Android 6.0] 通知バーの詳細を取得

こんにちは、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の一覧が取得できます。

 

実行

サンプルコードを実行して挙動をみてみます。

 

アプリを起動します。
SnapCrab_NoName_2016-1-4_20-48-29_No-00

 

notifyボタンを押下して、通知を行います。
その後、confirmボタンを押下すると以下のようなログがでます。

V/jp.co.notificationtest.MainActivity: number = 1

もう一度、notifyボタンを押下して、通知を行います。
その後、confirmボタンを押下すると以下のようなログがでます。

V/jp.co.notificationtest.MainActivity: number = 2

 

このように通知の状況を知ることができるようになりました。

 

以上、新たにAndroid Mから使用できるNotificationのAPIの説明でした。

 

 

KID.A

KID.A の紹介

楽して生きることと一発逆転を夢見ている、ちゃきちゃきのAndroiderです。 いろいろアプリを出しているのですが、いつもリリース後にターゲットユーザ数を2桁見誤っていたことに気付くので、残念でなりません。下方修正で、ヒットがでません。おしいです。 明日から本気出します。 よろしくお願いします。
カテゴリー: Android タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です