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

Android 13 为应用创建快捷方式

参考 developer.android.google.cn 创建快捷方式

来自官网的说明:

  • 静态快捷方式 :最适合在用户与应用互动的整个生命周期内使用一致结构链接到内容的应用。由于大多数启动器一次仅显示四个快捷方式,因此静态快捷方式有助于以一致的方式执行日常任务,例如,如果用户希望以特定方式查看日历或电子邮件。
  • 动态快捷方式 :用于应用中与上下文相关的操作。上下文相关快捷方式针对用户在应用中执行的操作量身打造。例如,如果您构建的游戏允许用户在启动时从当前关卡开始,您需要经常更新该快捷方式。借助动态快捷方式,您可以在每次用户通关时更新快捷方式。
  • 固定快捷方式 :用于用户驱动的特定操作。例如,用户可能需要将特定网站固定到启动器。这种方式是有益的,因为它可让用户执行自定义操作,例如一步导航到网站,这比使用浏览器的默认实例速度更快。

原生系统上,长按应用图标显示快捷方式,点击快捷方式就打开应用的某个页面。
在这里插入图片描述

创建静态快捷方式

1.清单文件添加

在应用的主页面添加如下,shortcuts 就是要配置的文件。

	<meta-dataandroid:name="android.app.shortcuts"android:resource="@xml/shortcuts" />                

主页面就是配置了 android.intent.action.MAINandroid.intent.category.LAUNCHER 的 Activity 。
示例:

        <activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-dataandroid:name="android.app.shortcuts"android:resource="@xml/shortcuts" /></activity>

2.创建shortcuts.xml

创建 res/xml/shortcuts.xml 文件,配置如下,

<?xml version ="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"><shortcutandroid:enabled="true"android:icon="@drawable/shape_oval_sweep"android:shortcutDisabledMessage="@string/shortcut_disabled_message1"android:shortcutId="id11"android:shortcutLongLabel="@string/shortcut_long_label1"android:shortcutShortLabel="@string/shortcut_short_label1"><intentandroid:action="android.intent.action.VIEW"android:data="shortcut1"android:targetClass="com.test.luodemo.appwidget.ShortcutActivity"android:targetPackage="com.test.luodemo" /></shortcut><shortcutandroid:enabled="true"android:shortcutDisabledMessage="@string/shortcut_disabled_message2"android:shortcutId="id22"android:icon="@drawable/shape_oval_liner"android:shortcutLongLabel="@string/shortcut_long_label2"android:shortcutShortLabel="@string/shortcut_short_label2"><intentandroid:action="android.intent.action.VIEW"android:data="shortcut2"android:targetClass="com.test.luodemo.appwidget.ShortcutActivity"android:targetPackage="com.test.luodemo" /></shortcut></shortcuts>

创建了两个快捷方式。

  • android:enabled :是否可用,默认值为 true。如果将其设置为 false,请设置 android:shortcutDisabledMessage,说明停用该快捷方式的原因。如果您认为自己不需要提供此类消息,请从 XML 文件中完全移除该快捷方式。
  • android:shortcutDisabledMessage :用户尝试启动已停用的快捷方式时显示在支持的启动器中的消息。如果 android:enabled 为 true,则此属性的值无效。
  • android:shortcutId :字符串。
  • android:icon :快捷方式的图标。
  • android:shortcutShortLabel :快捷方式的简短说明,长度限制为 10 个字符。
  • android:shortcutLongLabel :快捷方式的详细说明。如果空间足够,会显示此值,而不是 android:shortcutShortLabel ,长度限制为 25 个字符。

intent 内部元素

  • android:targetClass :跳转的页面;
  • android:targetPackage :跳转的应用包名。
  • android:data :携带参数,方便区分是哪个快捷方式,跳转的页面可以通过 getIntent().intent.getDataString() 得到数据。

搞定,运行效果
在这里插入图片描述

创建动态快捷方式

动态的意思就是,需要的时候添加,不需要时删除。

写两个 Button ,一个创建,一个删除。

都是用 androidx.core.content.pm.ShortcutManagerCompat

创建

很简单,一目了然。功能是 跳转到设置查看本应用的通知。

import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;ShortcutInfoCompat shortcut = new ShortcutInfoCompat.Builder(mContext, "iddynamic").setShortLabel("此应用的通知").setLongLabel("动态快捷方式长描述").setIcon(IconCompat.createWithResource(mContext, R.drawable.shape_ring)).setIntent(new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).putExtra(Settings.EXTRA_APP_PACKAGE,mContext.getPackageName())).build();ShortcutManagerCompat.pushDynamicShortcut(mContext, shortcut);

删除

根据 id 删除单个,

List<String> mList = new ArrayList<>();
mList.add(shortcutId);
ShortcutManagerCompat.removeDynamicShortcuts(mContext, mList);

删除所有,

ShortcutManagerCompat.removeAllDynamicShortcuts(mContext);

效果
在这里插入图片描述

创建桌面快捷方式

使用 ShortcutManager 实现,

    private void addPinShortcut(){ShortcutManager shortcutManager = mContext.getSystemService(ShortcutManager.class);if (shortcutManager.isRequestPinShortcutSupported()) {//跳转应用消息Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);Uri uri = Uri.fromParts("package", mContext.getPackageName(), null);intent.setData(uri);// Enable the existing shortcut with the ID "my-shortcut".ShortcutInfo pinShortcutInfo =new ShortcutInfo.Builder(mContext, "my-shortcut").setIcon(Icon.createWithResource(mContext, R.drawable.shape_rectangle_corners)).setShortLabel("固定快捷方式").setLongLabel("固定快捷方式长描述").setIntent(intent).build();Intent pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(pinShortcutInfo);PendingIntent successCallback;if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {successCallback = PendingIntent.getActivity(mContext, 101, pinnedShortcutCallbackIntent, PendingIntent.FLAG_IMMUTABLE);} else {successCallback = PendingIntent.getActivity(mContext, 101, pinnedShortcutCallbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);}boolean ret = shortcutManager.requestPinShortcut(pinShortcutInfo,successCallback.getIntentSender());Log.d(TAG , "addPinShortcut -- ret : " + ret);}}

本例功能是跳转掉设置,打开此应用的应用信息页面。

运行效果
在这里插入图片描述

相关文章:

Android 13 为应用创建快捷方式

参考 developer.android.google.cn 创建快捷方式 来自官网的说明&#xff1a; 静态快捷方式 &#xff1a;最适合在用户与应用互动的整个生命周期内使用一致结构链接到内容的应用。由于大多数启动器一次仅显示四个快捷方式&#xff0c;因此静态快捷方式有助于以一致的方式执行…...

PTA—C语言期末复习(选择题)

1. 按照标识符的要求&#xff0c;&#xff08;A&#xff09;不能组成标识符。 A.连接符 B.下划线 C.大小写字母 D.数字字符 在大多数编程语言中&#xff0c;标识符通常由字母&#xff08;包括大写和小写&#xff09;、数字和下划线组成&#xff0c;但不能以数字开头&#xff0c…...

基于STM32的智能家用空气净化系统

目录 引言环境准备智能家用空气净化系统基础代码实现&#xff1a;实现智能家用空气净化系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;空气净化管理与优化问题解决方案与优化收尾与总结 1. 引言 智能家用空气净化系…...

计算机图形学入门18:阴影映射

1.前言 前面几篇关于光栅化的文章中介绍了如何计算物体表面的光照&#xff0c;但是着色并不会进行阴影的计算&#xff0c;阴影需要单独进行处理&#xff0c;目前最常用的阴影计算技术之一就是Shadow Mapping技术&#xff0c;也就是俗称的阴影映射技术。 2.阴影映射 Shadow Map…...

电机应用相关名词介绍

1.电机转速 定义&#xff1a;电机转速指电机工作时旋转的速度&#xff0c;是衡量电机性能的重要指标之一。 单位&#xff1a; 每分钟转数&#xff08;RPM&#xff09;&#xff1a;即Revolutions Per Minute&#xff0c;表示电机每分钟旋转的圈数。 每秒转数&#xff08;RPS…...

哈尔滨等保测评解读

哈尔滨的信息系统安全等级保护测评&#xff08;简称“等保测评”&#xff09;是中国网络安全法规的一部分&#xff0c;旨在确保关键信息基础设施和其他重要信息系统的安全。下面是对哈尔滨等保测评的解读&#xff1a; 测评目的 等保测评的主要目的是评估信息系统是否满足国家规…...

python接口自动化的脚本

使用Requests库进行GET请求 Requests是Python中最常用的HTTP库,用于发送HTTP请求。下面是一个简单的GET请求示例,用于从API获取数据。 import requests url = "https://api.example.com/data" response = requests.get(url) if response.status_code == 200:prin…...

pdf转换成cad,这几个cad转换小妙招快码住!

在数字设计领域&#xff0c;PDF&#xff08;Portable Document Format&#xff09;和CAD&#xff08;Computer-Aided Design&#xff09;文件格式各有其独特之处。PDF常用于文件共享和打印&#xff0c;而CAD则是工程师和设计师们进行精确绘图和建模的必备工具。然而&#xff0c…...

计算机组成原理——系统总线

题目:计算机使用总线结构便于增减外设,同时__C____。 A.减少了信息传送量 B.提高了信息传输速度 C.减少了信息传输线的条数 1. 总线的分类 1.1. 片内总线 芯片内部的总线 在CPU芯片内部,寄存器与寄存器之间、寄存器与逻辑单元ALU之间 1.1.1. 数据总线 双向传输总线 数…...

2024年6月大众点评广州餐饮店铺POI分析20万家

2024年6月大众点评广州餐饮店铺POI共有199175家 店铺POI点位示例&#xff1a; 店铺id k9uiFADtAvs9EdPC 店铺名称 点都德(聚福楼店) 十分制服务评分 8.6 十分制环境评分 8.3 十分制划算评分 8.5 人均价格 77 评价数量 41673 店铺地址 惠福东路470号(富临食府对面) 大…...

【最佳实践】前端如何搭建自己的cli命令行工具,让自己编码的时候如虎添翼

作为前端开发人员&#xff0c;搭建自己的前端CLI工具是一个有趣且有意义的事情。以下是一篇详细的教程&#xff0c;包括使用场景和案例。 使用场景 假设你是一个前端团队的一员&#xff0c;需要频繁地在不同的项目中执行一些标准化的任务&#xff0c;比如&#xff1a; 根据模…...

未来一周比特币价格及数字货币市场预测

荷月的比特币市场就像过山车一样&#xff0c;仅仅六月下旬就跌去-12%&#xff0c;本周更是暴跌-6%&#xff0c;至 58,378美元。在这种市场表现&#xff0c;应有的踩踏如期而至。德国政府今日宣布再出售750 比特币的行为继续打击多头&#xff0c;但是小编认为这恰恰预示着市场可…...

Qt Quick 教程(二)

文章目录 今天分析一段代码1. 注册单例类型2. 注册普通QML类型3. 注册C++类型到Qt元对象系统4.总结,具体解释5.如何在QML中使用这些注册的类型参考今天分析一段代码 // Register typesqmlRegisterSingletonType(QUrl("qrc:/StyleSheet.qml"), "Librum.style&qu…...

10个实用的Python编程实例,助你快速掌握Python技巧!

作为一门简洁易学且强大的编程语言&#xff0c;Python广泛应用于各个领域。本文将向大家介绍10个实用的Python编程实例&#xff0c;通过详细的实例代码帮助读者快速掌握Python的基础知识和常用技巧。 1. 计算阶乘 def factorial(n):if n 0:return 1else:return n * factorial…...

为什么要本地化您的多媒体内容?

当我们访问网站、应用程序和社交媒体时&#xff0c;体验不再局限于陈旧的文本和静态图像。现代处理能力和连接速度提高了快速加载视频、音频和动画的可能性。 这一切都提供了更具沉浸感和互动性的用户体验。多媒体是数字营销中最有效的内容之一&#xff0c;因为它对用户更具吸…...

MMCV【mmclassification】 从0到1 之 Docker 容器环境搭建步骤总结

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 📙 Linux 下 Docker 安装环境检查Docker 安装 [ root 或者 sudo 权限用户可安装 ]给 普通用户 加入 Docker …...

深入探索Jetpack数据绑定(DataBinding)

Jetpack的数据绑定&#xff08;DataBinding&#xff09;库为我们提供了一个强大而灵活的工具&#xff0c;用于将UI组件与数据源绑定在一起。本文将深入探讨数据绑定的高级用法&#xff0c;包括双向绑定、自定义Binding Adapter、使用LiveData和ViewModel&#xff0c;以及如何处…...

vivado CELL_BLOAT_FACTOR、CFGBVS

CELL_BLOAT_FACTOR CELL_BLOAT_FACTOR属性用于指定添加“空白”或 增加单元格间距以增加分层单元格之间的放置距离 单元Vivado放置器会将模块中的单元隔开&#xff0c;以改善路由结果 设计。 当模块中的单元放置在一起时&#xff0c;可以使用单元膨胀&#xff0c;并且 从而在放…...

Linux—进程与计划管理

目录 一、程序 二、进程 1、什么是进程 2、进程的特点 3、进程、线程、携程 3.1、进程 3.2、线程 3.3、携程 三、查看进程信息 1、ps -aux 2、ps -elf 3、top ​3.2、输出内容详解 3.2.1、输出第一部分解释 3.2.2、输出第二部分解释 4、pgrep 5、pstree 四、进…...

整数智能与上海数据交易所携手,共筑数据要素市场新篇章

近期&#xff0c;整数智能荣获上海数据交易所“数据治理服务商”证书&#xff0c;正式加入上海数据交易所数商生态&#xff0c;成为上海数据交易所官方认证的数据治理服务商。 在数字经济的浪潮中&#xff0c;上海数据交易所一直扮演着引领者和推动者的角色。紧扣建设国家级…...

计算机网络-自顶向下方法复习纲要

计算机网络-自顶向下方法复习纲要 第一章&#xff1a;计算机网络和因特网 协议&#xff1a;p6网络边缘&#xff1a;p6网络核心&#xff1a;p15存储转发传输机制&#xff1a;p16电路转发中的复用&#xff1a;p19-p20分组交换和电路交换的区别/对比&#xff1a;p18/p20分组交换…...

1.3.1 离散周期信号DFS

目录 离散周期序列的DFS表示 离散周期信号DFS的性质 线性特性 位移特性 对称特性 奇偶对称 共轭反转对称 实序列的对称特性 周期卷积 DFS——Discrete Fourier Series 傅里叶级数 离散周期序列的DFS表示 做题得到的小公式 离散周期信号DFS的性质 线性特性 位…...

springboot集成官方fastdfs以及fastdfs开启防盗链踩坑

目录 一、fastdfs原理 二、在springboot中使用fastdfs 三、fastdfs开启防盗链功能 四、fastdfs开启token验证踩坑 一、fastdfs原理 FastDFS是一个开源的轻量级分布式文件系统,它通过两个主要角色——跟踪器(Tracker)和存储节点(Storage)——来管理文件。 Tracker 主要…...

linux shell判断4g网络和有线网络状态

要在Linux中判断ppp0的4G网络和有线网络,并确保4G网络优先,可以使用以下方法: 首先,检查网络接口是否启用。可以使用ip link show命令查看网络接口的状态。 然后,使用ping命令测试网络连接。例如,可以分别ping一个有线网络和4G网络的网关,以确定哪个网络可用。 最后,根…...

[游戏开发][UE5]引擎使用学习记录

C Log和蓝图Log C Log 方法 UE_Log(参数1&#xff0c;参数2&#xff0c;参数3) //举例: UE_LOG(LogTemp, Error, TEXT("Log Info: %s"),"Test Log"); 三个参数的作用 参数1&#xff1a;输出窗口归类使用&#xff0c;你写什么它就显示什么 参数2&#x…...

微信小程序怎么使用JSON动画?

微信小程序怎么使用JSON动画&#xff1f; 前言&#xff1a; 在微信小程序中实现动画有很多种方式&#xff0c;今天主要讲JSON动画 css3动画jsAPI动画使用PAG素材做动画使用GIF播放动画使用JSON文件做动画 准备工作 JSON动画素材下载lottie-miniprogram插件创建微信小程序的…...

IOS Swift 从入门到精通:数组,集合,元组,对比,字典,枚举

目录 数组 集合 元组 Arrays vs sets vs tuples 字典 字典默认值 创建空集合 枚举 枚举关联值 枚举原始值 复杂类型:总结 数组 数组是存储为单个值的值的集合。例如,John、Paul、George 和 Ringo 是姓名,但数组可让您将它们分组为单个值,即 The Beatles。 在代…...

TextRank 算法

第1关&#xff1a;Jieba 在关键词提取中的应用 任务描述 本关任务&#xff1a;根据本关所学有关使用 Jieba 库进行关键词提取的知识&#xff0c;编写使用 Jieba 模块进行关键词提取的程序&#xff0c;并通过所有测试用例。 相关知识 为了完成本关任务&#xff0c;你需要掌握…...

压缩wsl的磁盘占用空间

本文说的是wsl 2。 1. 关闭wsl&#xff0c;在cmd窗口中输入如下命令&#xff1a; wsl --shutdown 2. 接着输入&#xff1a;diskpart 这个命令会弹出新的窗口 3. 在新的窗口中输入&#xff1a; select vdisk file"d:\vos\unbutu\ext4.vhdx" 其中的 d:\vos\unbut…...

打破生态「孤岛」,Catizen将开启Telegram小游戏2.0时代?

Catizen&#xff1a;引领Telegram x TON生态的顶级猫咪链游 在区块链游戏领域&#xff0c;吸引玩家的首要因素往往是游戏的趣味性。然而&#xff0c;仅靠趣味性无法评估一个项目的长期价值和发展潜力。真正能在区块链游戏市场中取得长久成功的项目&#xff0c;无一例外都依靠扎…...

重庆微信网站制作公司/个人博客搭建

Swiper常用于移动端网站的内容触摸滑动Swiper是纯javascript打造的滑动特效插件&#xff0c;面向手机、平板电脑等移动终端。 Swiper能实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。 Swiper开源、免费、稳定、使用简单、功能强大&#xff0c;是架构移动终端网站的重要…...

江苏无锡网站推广及优化/seo网站平台

昨日内容回顾 类成员 构造函数&#xff1a;和类同名&#xff0c;没有返回值&#xff0c;可以重载 this(),super()成员变量&#xff1a;成员函数&#xff1a;静态代码块&#xff1a;类加载执行{}&#xff1a;构造代码块interface 所有方法都是抽象的属性有固定的修饰符.接口之间…...

极验验证 wordpress/中山排名推广

文章目录0x01 DLL简介0x02 DLL 调用0x03 与 lib 文件区别0x04 DLL 编写0x01 DLL简介 ​ 动态链接库&#xff08;Dynamic-Link-Library&#xff0c;缩写dll&#xff09;, 是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式。这些库函数的扩展名是 .DLL、.OCX&am…...

网站开发形式/公司怎么建立自己的网站

just type open . 转载于:https://www.cnblogs.com/maozhige/p/3804525.html...

删掉cache wordpress/网站流量分析报告

通常我们只需要编写HTML&#xff0c;CSS&#xff0c;JavaScript屏幕上就会显示出漂亮的页面&#xff0c;但浏览器是如何使用我们的代码在屏幕上渲染像素的呢&#xff1f;浏览器将HTML&#xff0c;CSS&#xff0c;JavaScript转换为屏幕上所呈现的实际像素&#xff0c;这期间所经…...

来个黑黑的网站/关键字搜索引擎

前言本文讲解了从零开始学习Python数据科学的全过程&#xff0c;涵盖各种工具和方法你将会学习到如何使用python做基本的数据分析你还可以了解机器学习算法的原理和使用说明先说一段题外话。我是一名数据工程师&#xff0c;在用SAS做分析超过5年后&#xff0c;决定走出舒适区&a…...