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

Android Notification

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

Android Notification

    Android 8.0系统引入了通知渠道,每一条通知都属于一个对应的渠道。
    每个应用程序都可以自由地创建当前应用拥有哪些通知渠道,用户可以自由的选择这些通知渠道的重要程度,是否响铃、是否振动、关闭渠道的通知等操作。

通知示例1 - 发送通知、取消通知
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.os.Build;
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);

        // 创建 NotificationManager
        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        // 渠道ID
        String channelID = "normal";
        // 渠道名称
        String channelName = "Normal";
        // 重要等级 importANCE_MIN、importANCE_LOW、importANCE_DEFAULT、importANCE_HIGH
        int importance = NotificationManager.importANCE_DEFAULT;

        // Android 8.0 引入通知渠道,故需要进行判断
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
            // 创建通知渠道
            NotificationChannel channel = new NotificationChannel(channelID, channelName, importance);
            manager.createNotificationChannel(channel);
        }

        // 使用 NotificationCompat 的构造器创建 Notification 对象
        Notification notification = new NotificationCompat.Builder(this, channelID) // 渠道ID
                .setContentTitle("this is title.")  // 通知的标题
                .setContentText("this is text.")    // 通知的内容
                .setSmallIcon(R.drawable.ic_launcher_foreground)    // 通知的小图标,显示在系统状态栏上
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                        R.drawable.ic_launcher_foreground)) // 通知的大图标,下拉系统状态栏时看到
                .build();

        // 通知
        findViewById(R.id.send_bt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 通知 第一个参数:id,每次传入的id都要不同;第二个参数:Notification对象
                manager.notify(1, notification);
            }
        });

        // 取消通知
        findViewById(R.id.cancel_bt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                manager.cancel(1);
            }
        });
    }
}

处理通知点击事件 - PendingIntent

点击通知跳转到 指定的Activity,并取消点击的通知。

// 创建 PendingIntent 对象,用于处理点击事件 跳转到 MainActivity2
Intent intent = new Intent(this, MainActivity2.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

// 使用 NotificationCompat 的构造器创建 Notification 对象
Notification notification = new NotificationCompat.Builder(this, channelID) // 渠道ID
        .setContentTitle("this is title.")  // 通知的标题
        .setContentText("this is text.")    // 通知的内容
        .setSmallIcon(R.drawable.ic_launcher_foreground)    // 通知的小图标,显示在系统状态栏上
        .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher_foreground)) // 通知的大图标,下拉系统状态栏时看到
        .setContentIntent(pendingIntent) // 点击时触发的行为
        .setAutoCancel(true) // 点击后,通知取消,如果没有,就算点击了,还是显示在通知栏
        .build();
当通知内容过长时,显示完整内容 - setStyle

使用 setStyle 代替 setContentText

Notification notification = new NotificationCompat.Builder(this, channelID) // 渠道ID
        .setContentTitle("this is title.")  // 通知的标题
//                .setContentText("你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好" +
//                        "你好你好你好你好你好你好你好你好你好你好你好你好你好你好")    // 通知的内容
        .setStyle(new NotificationCompat.BigTextStyle().bigText("你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好" +
                "你好你好你好你好你好你好你好你好你好你好你好你好你好你好"))
        .setSmallIcon(R.drawable.ic_launcher_foreground)    // 通知的小图标,显示在系统状态栏上
        .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher_foreground)) // 通知的大图标,下拉系统状态栏时看到
        .setContentIntent(pendingIntent)
        .setAutoCancel(true) // 点击后,通知取消,如果没有,就算点击了,还是显示在通知栏
        .build();

替换前:

替换后:

通知内容为图片 - setStyle
Notification notification = new NotificationCompat.Builder(this, channelID) // 渠道ID
        .setContentTitle("this is title.")  // 通知的标题
        .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(
                BitmapFactory.decodeResource(getResources(), R.drawable.apple))) // 图片
        .setSmallIcon(R.drawable.ic_launcher_foreground)    // 通知的小图标,显示在系统状态栏上
        .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher_foreground)) // 通知的大图标,下拉系统状态栏时看到
        .setContentIntent(pendingIntent)
        .setAutoCancel(true) // 点击后,通知取消,如果没有,就算点击了,还是显示在通知栏
        .build();

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

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

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