Android Notification

image

image

image

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>

image

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);
    }
}
posted @ 2022-09-17 21:27  长情c  阅读(40)  评论(0)    收藏  举报