[源码] 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.mzph.cn/news/785458.shtml

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

相关文章

Android仿高德首页三段式滑动

最近发现很多app都使用了三段式滑动&#xff0c;比如说高德的首页和某宝等物流信息都是使用的三段式滑动方式&#xff0c;谷歌其实给了我们很好的2段式滑动&#xff0c;就是BottomSheet&#xff0c;所以这次我也是在这个原理基础上做了一个小小的修改来实现我们今天想要的效果。…

刷题之动态规划-路径问题

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;开始刷动态规划的题目了&#xff0c;要特别注意初始化的时候给什么值。 动态规划5个步骤 状态表示 &#xff1a;dp数组中每一个下标对应值的含义是什么->dp[i]表示什么状态转移方程&#xff1a; dp[i] 等于什么1 和 2 是…

NRF52832修改OTA升级时的bootloader蓝牙MAC

NRF52832在OTA升级时&#xff0c;修改了APP的蓝牙MAC会导致无法升级&#xff0c;原因是OTA程序的蓝牙MAC没有被修改所以手机扫描蓝牙时无法连接 解决办法 在bootloader的程序里面加入修改蓝牙mac地址的代码实现原理&#xff1a; 在bootloader蓝牙广播开启之前修改蓝牙mac 通…

轻松编辑照片,无需下载!2024年最受推荐的在线PS替代工具

设计领域&#xff0c;Adobe Photoshop无疑是最受欢迎的软件之一。然而&#xff0c;PS对初学者来说可能很复杂&#xff0c;需要安装在计算机上&#xff0c;更不用说相对昂贵的价格了。这些因素使得PS在线网页替代设计工具越来越受欢迎。今天&#xff0c;我们将为您介绍一些优秀的…

[Leetcode笔记] 滑动窗口相关

前言 今天做leetcode的时候遇到一道滑动窗口相关的题目&#xff0c;题目具体内容如下&#xff1a; 思路 这道题很显然需要用到滑动窗口&#xff0c;肯定不是让你傻乎乎一遍一遍去遍历数组的内容然后遍历尝试 流程&#xff1a; 先算数组的总大小。使用while计算滑动窗口数…

第十二届蓝桥杯JavaA组省赛真题 - 相乘

解题思路&#xff1a; 暴力 public class Main {public static void main(String[] args) {for (long i 1; i < 1000000007; i) {if (i * 2021 % 1000000007 999999999) System.out.print(i);else System.out.print(0);}} }

Linux线程实现

前言 前面提到进程和线程的区别&#xff0c;进程是资源分配的基本单位&#xff0c;线程是程序执行的基本单位。线程都属于某个进程&#xff0c;而同一个进程下的不同线程分别有共享和独享的数据&#xff0c;这里再列举一下&#xff1a; 同一进程内的所有线程除了共享全局变量…

Python位操作指南:从基础到应用

前言 位操作允许直接在二进制层面上直接操作整数的各个位&#xff0c;使用位操作解决问题能降低很多时间和空间复杂度&#xff0c;以很低的成本很优雅的解决问题&#xff0c;不过有着一定的学习成本。 正文 负数和二进制表示 知识补充&#xff1a; 在计算机中&#xff0c;…

LeetCode-统计完全连通分量的数量

题目要求&#xff1a; 给你一个整数 n 。现有一个包含 n 个顶点的 无向 图&#xff0c;顶点按从 0 到 n - 1 编号。给你一个二维整数数组 edges 其中 edges[i] [ai, bi] 表示顶点 ai 和 bi 之间存在一条 无向 边。 返回图中 完全连通分量 的数量。 如果在子图中任意两个顶点…

ChatGPT引领量化交易革命:AI在金融创新的浪潮中崭露头角

随着科技的飞速发展,金融领域正迎来一场前所未有的创新浪潮。在这场变革中,ChatGPT凭借其卓越的自然语言处理能力和深度学习能力,正引领量化交易进入新时代。 量化交易,作为现代金融领域的一种重要交易方式,依赖于复杂的数学模型和大量的历史数据来制定交易策略。然而,传…

揭秘速成软件书:彩虹之下的真相

在这个信息爆炸的时代&#xff0c;我们常常被诱惑性的标题所吸引&#xff1a;“三天掌握Python编程”&#xff0c;“一周精通Photoshop”&#xff0c;书架上堆满了各种各样的速成指南&#xff0c;这些声称能迅速提升技能的书籍&#xff0c;真的能做到它们所承诺的吗&#xff1f…

C++与C语言

C之所以是C&#xff0c;和面向过程的C语言相比&#xff0c;它加了一个类&#xff0c;还有一个是模板。 引入 C语言这种面向过程的编译语言可以将待解的问题分解成若干个子问题&#xff0c;面向对象程序设计则是建立在结构化程序设计方法的基础上&#xff0c;完全避免了结构化程…

前任在代码里下毒,支付下单居然没加幂等?

首先蜗牛和大家从以下几个方面好好剖析一下接口幂等吧。 什么是接口幂等 比较专业的术语&#xff1a;其任意多次执行所产生的影响均与第一次执行的影响相同。 也就是多次调用的情况下&#xff0c;接口最终得到的结果是一致的。 那么为什么需要幂等呢&#xff1f; 那么哪些接…

中科院自动化所实习总结(完)

实习单位 中国科学院自动化所 工作内容 项目涉密&#xff0c;不便介绍 负责内容 负责完善文档&#xff0c;画流程图&#xff0c;UML类图之类的写小模块的代码 实习感悟 大概的整个过程 其实在这段实习中&#xff0c;我得到的最多的并不是技术上的成长&#xff0c;而是业…

数据结构03:栈、队列和数组 队习题01[C++]

考研笔记整理~&#x1f95d;&#x1f95d; 之前的博文链接在此&#xff1a;数据结构03&#xff1a;栈、队列和数组_-CSDN博客~&#x1f95d;&#x1f95d; 本篇作为链表的代码补充&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 第1版&#xff1a;王道书的课后习题…

实战-后台管理系统SQL注入漏洞

对于edu来说&#xff0c;是新人挖洞较好的平台&#xff0c;本次记录一次走运的捡漏0x01 前景 在进行fofa盲打站点的时候&#xff0c;来到了一个后台管理处看到集市二字&#xff0c;应该是edu站点 确认目标身份&#xff08;使用的quake进行然后去ipc备案查询&#xff09; 网…

Qt实现Kermit协议(一)

1 概述 Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。 其特性如下: Kermit文件运输协议是一个半双工的通信协议。它支持7位ASCII字符。数据以可多达96字节长度的可变长度的分组形式传输。对每个被传送分组需要一个确认。Kerm…

LeetCode刷题笔记之hot 100(二)

1. 322【零钱兑换】- 动态规划 题目&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回…

关于视场角,你需要知道这些!

视场角在光学工程中又称视场&#xff0c;视场角的大小决定了光学仪器的视野范围。视场角又可用FOV&#xff08;Field of view&#xff09;表示&#xff0c;其与焦距的关系如下&#xff1a;像高 EFL*tan (半FOV)&#xff1b;EFL为焦距&#xff1b;FOV为视场角。即以入瞳位置为顶…

一个包一条命令,我实现了对整个前端项目代码的校验

在现代前端开发中&#xff0c;代码校验与风格统一不仅是良好编程习惯的体现&#xff0c;更是提升项目质量、保障代码可维护性与减少潜在bug的关键环节。然而&#xff0c;面对诸如ESLint、Commitlint、Stylelint等多样化的校验工具&#xff0c;以及针对React、Vue等不同前端框架…