栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android-Notification-通知的基本用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android-Notification-通知的基本用法

通知(notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。

修改activity_main.xml,仅仅加入了一个按钮用于发送通知




    

修改MainActivity.java:

package com.example.notificationtest;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;


public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, "onCreate: execute");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建一个NotificationManager对通知进行管理
        NotificationManager manager = (NotificationManager)
                    getSystemService(NOTIFICATION_SERVICE);
        //创建channel
        NotificationChannel channel = new NotificationChannel("normal", "normal",
                    NotificationManager.IMPORTANCE_HIGH);
        manager.createNotificationChannel(channel);
        //定义点击事件:
        Button buttonSendNotification = findViewById(R.id.send_notification);
        buttonSendNotification.setOnClickListener(v -> {
            Notification notification = new NotificationCompat.Builder(this, "normal")
                    .setContentTitle("This is content title")
                    .setContentText("This is content text")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                    .setAutoCancel(true)
                    .build();
            Log.d(TAG, "onCreate: notify successfully");
            manager.notify(100, notification);
        });
    }

}

首先需要NotificationManager实例来管理通知,调用Context 的getSystemService()方法获取。getSystemService()方法接收一个字符串参数用于确定获取系统的哪个服务, 这里我们传入Context.NOTIFICATION_SERVICE 即可。

接下来使用NotificationChannel类构建一个通知channel,并调用NotificationManager的
createNotificationChannel()方法完成创建。由于NotificationChannel类和createNotificationChannel()方法都是Android 8.0系统中新增的API,因此在使用时还需进行版本判断。createNotificationChannel()创建一个通知channel至少需要channel ID、channel 名称以及重要等级3个参数,其中ID可以随便定义,但保证全局唯一性。名称是展示给用户看的,需要清楚地表达channel的用途,重要等级主要有IMPORTANCE_HIGH、IMPORTANCE_DEFAULT、IMPORTANCE_LOW、IMPORTANCE_MIN这几种,对应的重要程度依次从高到低。不同的重要等级会决定通知的不同行为。

创建通知的详细步骤:  使用Notificationcompat类的Bulder构造器来创建Notification对象,NotificationCompat.Builder构造函数接收两个参数:第一个参数是context;第二个是channel ID,需要和我们在创建通知channel 时指定的渠道ID相匹配。可以在最终的build()方法之前连缀任意多的设置方法来创建一个丰富的Notification对象。setContentTitle()方法用于指定通知的标题内容,下拉系统状态栏就可以看到这部分内容。setContentText()方法用于指定通知的正文内容,同样下拉系统状态栏就可以看到这部分内容。setSmallIcon()方法用于设置通知的小图标,只能使用纯alpha图层的图片进行设置,小图标会显示在系统状态栏上。setLargeIcon()方法用于设置通知的大图标,下拉系统状态栏时,就可以看到设置的大图标。setWhen()设置通知被创建的时间,默认值是System.currentTimeMillis()。

以上工作完成后,只需调用NotificationManager的notify()方法就可以让通知显示出来。notify()方法接收两个参数:第一个参数是id,要保证为每个通知指定的id都是不同的;第二个参数是Notification对象,这里直接将创建好的Notification对象传入即可。

点击Send Notification按钮可以看到弹出了提示,下拉状态栏也可以看到通知。

 以上即Notification的简单用法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号