通知エリアに「通知」(Notification)を表示する [Android Studio]
目次
1. 作るもの
2. 画面設計
2-1. メイン
2-2. サブ
3. コーディング
1. 作るもの
ボタンを押すと通知エリアに次図のような「通知」を表示します。また、通知をタップすると指定のアクティビティが起動されます。

2. 画面設計
2-1. メイン
Buttonを2つ配置します。
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://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="通知をする" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toStartOf="@+id/button2" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="サブ画面を起動する" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/button" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
2-2. サブ
[新規][アクティビティ]の「空のアクティビティ」を選択します。

アクティビティ名は「NotificationActivity」にします。

画面にはTextViewを1つ配置します。
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".NotificationActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginStart="8dp" android:text="TextView" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
3. コーディング
[MainActivity.java]
import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.support.v4.app.NotificationCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 通知を作成するビルダーの生成 NotificationCompat.Builder builder = new NotificationCompat.Builder( MainActivity.this, "MyChannel_Id"); // 通知のアイコン builder.setSmallIcon(android.R.drawable.ic_dialog_info); // 通知のタイトル builder.setContentTitle("通知タイトル"); // 通知の内容 builder.setContentText("通知の内容"); // 通知をタップした際にアクティビティを起動する // --- ここを削除すると通知の表示のみとなる Intent intent = new Intent(MainActivity.this,NotificationActivity.class); intent.putExtra("DATA","通知から起動されました。"); PendingIntent pen = PendingIntent.getActivity(MainActivity.this, 0, // 0は識別子。何でも良い intent, PendingIntent.FLAG_CANCEL_CURRENT); // オブジェクトを再生成 builder.setContentIntent(pen); builder.setAutoCancel(true); // --- ここを削除すると通知の表示のみとなる // 通知の作成 Notification notification = builder.build(); // 通知サービスで通知を実行する NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(0, notification); // 0は識別子。何でも良い } }); findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // サブ画面を表示する Intent intent = new Intent(MainActivity.this,NotificationActivity.class); startActivity(intent); } }); } }
[NotificationActivity.java]
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class NotificationActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_notification); // わかりやすいようにタイトルを変更する setTitle("NotificationActivity"); Intent intent = getIntent(); String data = intent.getStringExtra("DATA"); TextView tv = findViewById(R.id.textView); // 通知から起動された場合 if(data != null) { tv.setText(data); // ボタンから起動された場合 }else{ tv.setText("ボタンから起動しました。"); } } }
参考URL(Google)
Notification NotificationManager PendingIntent
スポンサーリンク
関連記事
公開日:2018年05月22日
記事NO:02663