AndroidでNotificationCompat.Builderを使って通知を作成する方法
Androidの通知(Notification)とは?
NotificationCompat.Builderの実装方法を解説する前に、まずAndroidにおける「通知」とは何かを確認しておきましょう。通知とは、ステータスバー(アクションバー)上に表示されるシステムメッセージのようなものです。たとえば、下図のような不在着信の通知がその代表例です。

このチュートリアルでは、Androidアプリに通知機能を組み込む方法を、サンプルコードを使いながらステップごとに解説していきます。
ステップ1:新しいプロジェクトを作成する
Android Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。
ステップ2:レイアウトファイル(activity_main.xml)にコードを追加する
res/layout/activity_main.xml に以下のコードを記述します。ここでは、ボタンを1つ配置したシンプルなレイアウトを定義しています。
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".MainActivity">
<Button
android:id = "@+id/button"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Click"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintLeft_toLeftOf = "parent"
app:layout_constraintRight_toRightOf = "parent"
app:layout_constraintTop_toTopOf = "parent" />
</android.support.constraint.ConstraintLayout>
ステップ3:MainActivity.javaにコードを追加する
src/MainActivity.java に以下のコードを記述します。ボタンをタップしたタイミングで通知チャンネルを作成し、NotificationCompat.Builderを使って通知を表示する仕組みです。
package com.example.andy.myapplication;
import android.annotation.SuppressLint;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Switch;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=findViewById(R.id.button);
button.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
notificationDialog();
break;
}
}
@RequiresApi(api = Build.VERSION_CODES.O)
private void notificationDialog() {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String NOTIFICATION_CHANNEL_ID = "tutorialspoint_01";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@SuppressLint("WrongConstant") NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_MAX);
// 通知チャンネルの設定を行います。
notificationChannel.setDescription("Sample Channel description");
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
notificationChannel.enableVibration(true);
notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
notificationBuilder.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setTicker("Tutorialspoint")
//.setPriority(Notification.PRIORITY_MAX)
.setContentTitle("sample notification")
.setContentText("This is sample notification")
.setContentInfo("Information");
notificationManager.notify(1, notificationBuilder.build());
}
}
アプリを実行して動作を確認する
それでは、アプリケーションを実行してみましょう。ここでは、実際のAndroid端末がパソコンに接続されているものとして説明を進めます。
Android Studioからアプリを実行するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーにある「Run」アイコンをクリックします。実行対象として接続中のモバイル端末を選択すると、端末にアプリの初期画面が表示されます。

次に、画面上のボタンをタップしてみてください。以下のように通知が表示されれば成功です。

コードのポイント解説
- 通知チャンネルの作成:Android 8.0(APIレベル26)以降では、通知を表示するために必ず通知チャンネル(NotificationChannel)を作成する必要があります。チャンネルごとにLEDライトや振動パターンなどの挙動を個別に設定できます。
- NotificationCompat.Builder:サポートライブラリが提供するビルダークラスで、古いOSバージョンとの互換性を保ちながら通知を構築できます。タイトル、本文、アイコンなどをチェーン形式で指定できるのが特徴です。
- setAutoCancel(true):ユーザーが通知をタップした際に、通知を自動的に消すための設定です。
- notificationManager.notify():第1引数のIDで通知を識別します。同じIDで呼び出すと既存の通知が更新され、異なるIDを指定すれば複数の通知を同時に表示できます。
なお、Android 13(APIレベル33)以降で通知を表示するには、あらかじめ POST_NOTIFICATIONS 権限をマニフェストに宣言し、ランタイムで許可を求める必要がある点にも注意してください。
-
【Android開発】角丸のEditTextを作成する方法をステップごとに解説
はじめにこの記事では、Androidアプリで角が丸い(角丸)EditTextを作成する方法を、具体的なコード例とともに解説します。drawableリソースにカスタムのshapeファイルを定義し、それをEditTextの背景に設定するだけで、簡単におしゃれな角丸デザインを実現できます。手順1:新規プロジェクトを作成するまず、Android Studioで新しいプロジェクトを作成します。メニューから「File → New Project」を選択し、必要な情報を入力してプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)を編集する次に、「res/layou
-
CSSで通知バッジ付きボタンを作成する方法【コード例付き】
CSSを使えば、通知件数を示すバッジ(数字)が付いたボタンを簡単に作成できます。ポイントは、親要素に position: relative; を指定し、バッジ側に position: absolute; を指定して右上に配置することです。以下に、実際に動作するサンプルコードを紹介します。 実装例 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <styl