[源码] Android 上的一些快捷方式,如通知、快捷方式等

目录

  • 一、通知
    • 0. 配置权限
    • 1. 测试发送通知代码
    • 2. 打开通知设置界面代码
    • 3. 前台服务创建常驻通知
  • 二、快捷方式
    • 1. 测试添加动态快捷方式代码
  • 三、开发者图块
  • 四、桌面小部件

基于jetpack compose 框架的使用代码

一、通知

参见 官方文档

0. 配置权限

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

1. 测试发送通知代码

悬浮提醒

Button(onClick = { val channelId = "notify1"val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManagerval channel = NotificationChannel(channelId, "通知消息1", NotificationManager.IMPORTANCE_HIGH).apply {description = "this is a test channel"setShowBadge(true)enableVibration(true)setAllowBubbles(true)enableLights(true)}manager.createNotificationChannel(channel)val pendingIntent = PendingIntent.getActivity(context, 1002,Intent(this@MainActivity, WakeActivity::class.java),PendingIntent.FLAG_MUTABLE)val noticeId = Random.nextInt()val notification = NotificationCompat.Builder(context, channelId).setSmallIcon(R.drawable.future).setContentTitle("未来").setContentText("未来已经到了").setStyle(NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(resources, R.drawable.future))).setBadgeIconType(NotificationCompat.BADGE_ICON_LARGE).setNumber(10).setAllowSystemGeneratedContextualActions(true).setBubbleMetadata(NotificationCompat.BubbleMetadata.fromPlatform(BubbleMetadata.Builder("a bubble 1").build())).setContentIntent(pendingIntent).build()val timer = object:CountDownTimer(3000, 3000){override fun onTick(millisUntilFinished: Long) {}override fun onFinish() {manager.notify(noticeId, notification)}}timer.start()
}){Text(text = "测试")
}

2. 打开通知设置界面代码

Button(onClick = { val intentSetting = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)intentSetting.putExtra(Settings.EXTRA_APP_PACKAGE, packageName)//                            intentSetting.putExtra(Settings.EXTRA_CHANNEL_ID, "chat4")startActivity(intentSetting)
}) {Text(text = "测试")
}

3. 前台服务创建常驻通知

override fun onCreate() {super.onCreate()Log.e(TAG, "onCreate: create sevice", )val channelId = "foregroundService"val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManagerval channel = NotificationChannel(channelId, "前台服务", NotificationManager.IMPORTANCE_HIGH).apply {description = "this is a foregroundService notification"}manager.createNotificationChannel(channel)val pendingIntent = PendingIntent.getActivity(this, 1003,Intent(this, MainActivity::class.java),PendingIntent.FLAG_MUTABLE)val notification = NotificationCompat.Builder(this, channelId).setSmallIcon(R.drawable.future).setContentTitle("实时服务").setContentText("未来已经到了").setContentIntent(pendingIntent).build()startForeground(Random.nextInt(), notification)
}

二、快捷方式

参见 官方文档

1. 测试添加动态快捷方式代码

快捷方式

Button(onClick = { ShortcutManagerCompat.addDynamicShortcuts(context, listOf(ShortcutInfoCompat.Builder(context, "id1").setShortLabel("Website 1").setLongLabel("Open the website ${Random.nextInt()}").setIcon(IconCompat.createWithResource(context, R.drawable.future)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.mysite.example.com/"))).build(),ShortcutInfoCompat.Builder(context, "id2").setShortLabel("Website 7").setLongLabel("Open the website ${Random.nextInt()}").setIcon(IconCompat.createWithResource(context, R.drawable.future)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.mysite.com/"))).build(),ShortcutInfoCompat.Builder(context, "id4").setShortLabel("Website 6").setLongLabel("Open the website ${Random.nextInt()}").setIcon(IconCompat.createWithResource(context, R.drawable.future)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.mysite.com/"))).build(),ShortcutInfoCompat.Builder(context, "id3").setShortLabel("Website 5").setLongLabel("Open the website ${Random.nextInt()}").setIcon(IconCompat.createWithResource(context, R.drawable.future)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.mysite.com/"))).build(),ShortcutInfoCompat.Builder(context, "id5").setShortLabel("Website 4").setLongLabel("Open the website ${Random.nextInt()}").setIcon(IconCompat.createWithResource(context, R.drawable.future)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.mysite.com/"))).build(),ShortcutInfoCompat.Builder(context, "id6").setShortLabel("Website 3").setLongLabel("Open the website ${Random.nextInt()}").setIcon(IconCompat.createWithResource(context, R.drawable.future)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.mysite.com/"))).build()))                    
}) {Text(text = "测试")
}

三、开发者图块

参见 官方文档

在这里插入图片描述

四、桌面小部件

参见 官方文档

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588160.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568 学习笔记 : 独立修改与编译 u-boot

前言 开发板&#xff1a;【正点原子】ATomPi-CA1 开发板&#xff0c;配置&#xff1a;RK3568&#xff0c;4GB DDRAM 64GB emmc 开发板资料给了 u-boot 与 Linux kernel 源码&#xff0c;尝试手动编译。 本篇记录 收到编译 RK3568 平台 u-boot 的方法 环境搭建 由于 RK 平台…

Redis.配置文件

基础篇Redis 6.1.2 .配置文件 spring:redis:host: 192.168.150.101port: 6379password: 123321lettuce:pool:max-active: 8 #最大连接max-idle: 8 #最大空闲连接min-idle: 0 #最小空闲连接max-wait: 100ms #连接等待时间6.1.3.测试代码 SpringBootTest class RedisDemo…

图神经网络实战(7)——图卷积网络(Graph Convolutional Network, GCN)详解与实现

图神经网络实战&#xff08;7&#xff09;——图卷积网络详解与实现 前言1. 图卷积层2. 比较 GCN 和 GNN2.1 数据集分析2.2 实现 GCN 架构 小结系列链接 前言 图卷积网络 (Graph Convolutional Network, GCN) 架构由 Kipf 和 Welling 于 2017 年提出&#xff0c;其理念是创建一…

数据结构(初阶)第一节:数据结构概论

本篇文章是对数据结构概念的纯理论介绍&#xff0c;希望系统了解数据结构概念的友友可以看看&#xff0c;对概念要求不高的友友稍做了解后移步下一节&#xff1a; 数据结构&#xff08;初阶&#xff09;第二节&#xff1a;顺序表-CSDN博客 正文 目录 正文 1.数据结构的相关概…

Word的”交叉引用“和”插入题注“快捷键设置

Word的”交叉引用“和”插入题注“快捷键设置 在MSWord2021中&#xff0c;可以自定义设置快捷键。方法如下&#xff1a;文件-选项-自定义功能区-键盘快捷方式&#xff08;自定义&#xff09;。具体过程如图所示。 最后&#xff0c;按照上述流程将插入题注&#xff08;Insert…

Node | Node.js 版本升级

目录 Step1&#xff1a;下载 Step2&#xff1a;安装 Step3&#xff1a;换源 发现其他博客说的 n 模块不太行&#xff0c;所以老老实实地手动安装 Step1&#xff1a;下载 Node 中文官网&#xff1a;https://nodejs.cn/download 点击后&#xff0c;将会下载得到一个 .msi 文件…

全志 Linux Qt

一、简介 本文介绍基于 buildroot 文件系统的 QT 模块的使用方法&#xff1a; • 如何在 buildroot 工具里编译 QT 动态库&#xff1b; • 编译及运行 qt_demo 应用程序&#xff1b; • 适配过程遇到的问题。 二、QT动态库编译 在项目根路径执行 ./build.sh buildroot_menuc…

go连接数据库(原生)

根据官网文档 Go Wiki: SQL Database Drivers - The Go Programming Language 可以看到go可以连接的关系型数据库 ​ 常用的关系型数据库基本上都支持&#xff0c;下面以mysql为例 下载mysql驱动 打开上面的mysql链接 GitHub - go-sql-driver/mysql: Go MySQL Driver i…

QT5-qmediaplayer播放视频及进度条控制实例

qmediaplayer是QT5的播放视频的一个模块。它在很多时候还是要基于第三方的解码器。这里以Ubuntu系统为例&#xff0c;记录其用法及进度条qslider的控制。 首先&#xff0c;制作一个简单的界面文件mainwindow.ui&#xff1a; 然后&#xff0c;下载一个mp4或其他格式视频&#x…

C语言 | Leetcode C语言题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; char* longestPalindrome(char* s) {int lenstrlen(s),max0;int p0;for(int i0;i<len;i)//这种是判断奇数回文{int lefti-1,righti1;//left左边&#xff0c;right右边while(left>0&&right<len&&s[left]s[right]){/…

是否有替代U盘,可安全交换的医院文件摆渡方案?

医院内部网络存储着大量的敏感医疗数据&#xff0c;包括患者的个人信息、病历记录、诊断结果等。网络隔离可以有效防止未经授权的访问和数据泄露&#xff0c;确保这些敏感信息的安全。随着法律法规的不断完善&#xff0c;如《网络安全法》、《个人信息保护法》等&#xff0c;医…

Linux提权!!!

上一篇文章讲了Windows的提权&#xff0c;那么这篇文章就来讲一下Linux的提权 1.SUID提权 suid权限 作用&#xff1a;让普通用户临时拥有该文件的属主的执行权限&#xff0c;suid权限只能应用在二进制可执行文件&#xff08;命令&#xff09;上&#xff0c;而且suid权限只能设置…