当前位置: 首页 > news >正文

Android 通知栏推送功能

Android 通知栏推送功能

Android 通知栏推送功能
让消息在用户的通知栏上显示,并且点击后跳转到指定的页面

MainActivity.Java


import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private static final String CHANNEL_ID = "my_channel_id";private static final String CHANNEL_NAME = "My Channel";private static final String CHANNEL_DESCRIPTION = "This is my notification channel";Bitmap bitmap = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button buttonSendNotification = findViewById(R.id.btn_show_normal);buttonSendNotification.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int id = v.getId();if (id == R.id.btn_show_normal) {sendNotification();}}});}private void sendNotification() {bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.dzq);Intent intent = new Intent(this, SecondActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);notificationChannel.setDescription(CHANNEL_DESCRIPTION);notificationManager.createNotificationChannel(notificationChannel);}Notification notification = null;if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {notification = new Notification.Builder(this, CHANNEL_ID).setContentTitle("My Notification").setContentText("This is the body of my notification").setSmallIcon(R.drawable.ic_launcher_foreground).setLargeIcon(bitmap).setContentIntent(pendingIntent).setAutoCancel(true).build();}notificationManager.notify(0, notification);}
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_show_normal"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示普通的Notification" /></LinearLayout>

SecondActivity.Java

import android.os.Bundle;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;/*** Created by Jay on 2015/9/28 0028.*/
public class SecondActivity extends AppCompatActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);}
}

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".SecondActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="阿三大苏打实打实"android:layout_centerInParent="true"/></RelativeLayout>

AndoirdManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.xxh.mynotification" ><uses-permission android:name="android.permission.FLASHLIGHT" /><uses-permission android:name="android.permission.POST_NOTIFICATIONS" /><uses-permission android:name="android.permission.VIBRATE" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_lol_icon"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".SecondActivity"/></application></manifest>

R.drawable.ic_launcher_foreground.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"android:width="108dp"android:height="108dp"android:viewportWidth="24"android:viewportHeight="24"android:tint="#000000"><group android:scaleX="0.6264"android:scaleY="0.6264"android:translateX="4.4832"android:translateY="4.4832"><pathandroid:fillColor="@android:color/white"android:pathData="M7,15H5.5v-4.5H4V9h3V15zM13.5,13.5h-3v-1h2c0.55,0 1,-0.45 1,-1V10c0,-0.55 -0.45,-1 -1,-1H9v1.5h3v1h-2c-0.55,0 -1,0.45 -1,1V15h4.5V13.5zM19.5,14v-4c0,-0.55 -0.45,-1 -1,-1H15v1.5h3v1h-2v1h2v1h-3V15h3.5C19.05,15 19.5,14.55 19.5,14z"/></group>
</vector>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 学习笔记第二十二天
  • QT键盘和鼠标事件
  • 画菱形(曼哈顿距离)
  • 【深度学习】DeepSpeed,ZeRO 数据并行的三个阶段是什么?
  • mysql中B+树的数据存储
  • 【MySQL】最左前缀匹配原则
  • zdppy+vue3+onllyoffice开发文档管理系统项目实战 20240808 上课笔记
  • Java中的分布式日志与追踪
  • Postman Pre-request Script
  • 【Vue3】Pinia存储及读取数据
  • [Meachines] [Easy] valentine SSL心脏滴血+SSH-RSA解密+trp00f自动化权限提升+Tmux进程劫持权限提升
  • 07、MySQL-多表查询
  • 关于重复提交
  • k8s—Prometheus+Grafana+Altermaneger构建监控平台
  • 2024年软件测试八股文(含答案+文档)
  • [译]前端离线指南(上)
  • 【EOS】Cleos基础
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Unix命令
  • 阿里云前端周刊 - 第 26 期
  • 读懂package.json -- 依赖管理
  • 你不可错过的前端面试题(一)
  • 前端之Sass/Scss实战笔记
  • 如何使用 JavaScript 解析 URL
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 我们雇佣了一只大猴子...
  • ​flutter 代码混淆
  • #pragma multi_compile #pragma shader_feature
  • #QT项目实战(天气预报)
  • #Z2294. 打印树的直径
  • $NOIp2018$劝退记
  • (11)MSP430F5529 定时器B
  • (C)一些题4
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (论文阅读40-45)图像描述1
  • (一)Linux+Windows下安装ffmpeg
  • (转)详解PHP处理密码的几种方式
  • .env.development、.env.production、.env.staging
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5种线程安全集合
  • .Net Core和.Net Standard直观理解
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net6使用WebSocket与前端进行通信
  • .Net各种迷惑命名解释
  • @EventListener注解使用说明
  • @ModelAttribute 注解
  • @Pointcut 使用
  • @staticmethod和@classmethod的作用与区别
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [ACP云计算]易混淆知识点(考题总结)
  • [AIGC] 深入浅出 Python中的`enumerate`函数