Android Notification



activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="sendNotification"
android:text="发出通知"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="cacelNotification"
android:text="取消通知"
/>
</LinearLayout>

NotificationActivity
package com.hxut;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
public class NotificationActivity extends Activity {
private final static String TAG = "mrs";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(TAG, "onCreate: 进入NotificationActivity..." );
}
}
MainActivity
package com.hxut;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private NotificationManager notificationManager;
private Notification notification;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
首先需要一个NotificationManager来对通知进行管理
调用Context的getSystemService()方法获取到。
getSystemService()方法接受的一个字符串参数用于确定系统的的哪一个服务。
*/
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//发起通知栏推送
//此处判断安卓版本号是否大于或者等于Android8.0(8.0引入了通知渠道这个东西)
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.O){
NotificationChannel channel = new NotificationChannel("mrs", "测试通知",
NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(channel);
}
//作为点击通知时的意图
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE);
/*
使用Builder构造器来创建Notification对象
通过Builder的链式编程设置一些通知的参数
(这里的channelId要创建NotificationChannel获取)
*/
notification = new NotificationCompat.Builder(this, "mrs")
//设置通知的标题
.setContentTitle("官方通知")
//设置通知的内容
.setContentText("世界那么大,我想去看看!")
//设置标题旁边的小图标 不支持rgb
.setSmallIcon(R.drawable.ic_baseline_person_24)
//设置点击通知时取消显示通知
.setAutoCancel(true)
//设置点击意图
.setContentIntent(pendingIntent)
//设置显示提示和通知中的大图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bg))
.build();
}
public void sendNotification(View view) {
//发送通知
notificationManager.notify(1, notification);
}
public void cacelNotification(View view) {
notificationManager.cancel(1);
}
}

浙公网安备 33010602011771号