「通知」を発行する方法
今回は、画面の上部にある通知領域に「通知」を発行して表示する方法です。APIレベル26以上とそれ未満では発行の方法が少し違っているので、「if文」を使って振り分けています。
サンプルコード①(MainActivity.java)
APIレベル26からは通知の発行に少し手間がかかるようになりました。通知マネージャー「NotificationManager」に通知チャンネル「NotificationChannel」を作る必要があるようです。※サンプルコードの詳しい説明はコード内のコメントを参照してください。
public class MainActivity extends AppCompatActivity {
//通知オブジェクトの用意と初期化
Notification notification = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトファイルをコンテントビューとしてセット
setContentView(R.layout.activity_main);
//システムから通知マネージャー取得
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//アプリ名をチャンネルIDとして利用
String chID = getString(R.string.app_name);
//アンドロイドのバージョンで振り分け
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { //APIが「26」以上の場合
//通知チャンネルIDを生成してインスタンス化
NotificationChannel notificationChannel = new NotificationChannel(chID, chID, NotificationManager.IMPORTANCE_DEFAULT);
//通知の説明のセット
notificationChannel.setDescription(chID);
//通知チャンネルの作成
notificationManager.createNotificationChannel(notificationChannel);
//通知の生成と設定とビルド
notification = new Notification.Builder(this, chID)
.setContentTitle(getString(R.string.app_name)) //通知タイトル
.setContentText("アプリ通知テスト26以上") //通知内容
.setSmallIcon(R.drawable.icon) //通知用アイコン
.build(); //通知のビルド
} else {
//APIが「25」以下の場合
//通知の生成と設定とビルド
notification = new Notification.Builder(this)
.setContentTitle(getString(R.string.app_name))
.setContentText("アプリ通知テスト25まで")
.setSmallIcon(R.drawable.icon)
.build();
}
//通知の発行
notificationManager.notify(1, notification);
}
}
サンプルコード②(AndroidManifest.xml)
マニフェストファイルに追記する必要はありません。
サンプルコード③(activity_main.xml)
今回は通知領域だけのサンプルなので、レイアウトファイルにオブジェクトを配置する必要はありません。
実行結果
① 起動すると画面上部の通知領域に通知を知らせるアイコンが表示されます。
② 通知領域を下にスライドさせると、通知一覧に今回作成した「通知」が表示されます。(APIレベル26以上)
③ APIレベル25以下の端末エミュレーターでテストしても同じように通知領域にアイコンが表示されます。
④ 通知領域を下にスライドさせると、通知一覧にサンプルコードで作成した「通知」が表示されます。(APIレベル25以下)
備考・その他
「通知」には必須コンテンツというのが3つほどあります。
・「setSmallIcon」で設定する小サイズのアイコン
・「setContentTitle」で設定するタイトル
・「setContentText」で設定する詳細テキスト
以上の3つは必ず設定しなければなりませんが、それ以外は省略が可能になっているようです。なお、詳細についてはアンドロイド公式開発サイトで確認することができます。
「Notifications Overview | Android Developers」
END