Android桌面长按图标快捷方式——Shortcuts

news2024/9/25 23:16:18

简介

当我们在长按Android应用的桌面图标时,一般回弹出一个列表,上面一般有应用信息、卸载应用等功能,并且部分应用在这里还添加了自己的快捷方式,今天主要介绍如何添加自定义的快捷方式。

长按桌面显示的快捷方式在Android中叫Shortcut,它有两种创建方式,分为静态创建和动态创建,并且跟Widget一样,也有对应的管理类来进行管理。废话不多说,直接开始

静态创建

第一步

静态创建分两个步骤,第一个是在Manifest文件中指定快捷方式配置文件的位置,首先找到Launcher的activity标签,添加meta-data标签如下:

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

在resources资源目录下创建xml文件夹,并在文件夹中创建名为shortcuts的xml文件,其中内容如下:我们创建了两个标签

<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@mipmap/ic_launcher_round"
        android:shortcutDisabledMessage="@string/disable_hint_message"
        android:shortcutId="shortcut1"
        android:shortcutLongLabel="@string/long_label_one"
        android:shortcutShortLabel="@string/short_label_one">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.example.helloworld.RecyclerViewTestActivity"
            android:targetPackage="com.example.helloworld">
            <extra
                android:name="key1"
                android:value="value1" />
        </intent>
    </shortcut>

    <shortcut
        android:enabled="true"
        android:icon="@mipmap/ic_launcher_round"
        android:shortcutDisabledMessage="@string/disable_hint_message"
        android:shortcutId="shortcut2"
        android:shortcutLongLabel="@string/long_label_two"
        android:shortcutShortLabel="@string/short_label_two">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.example.helloworld.TestViewPagerActivity"
            android:targetPackage="com.example.helloworld">
            <extra
                android:name="key2"
                android:value="value2" />
        </intent>
    </shortcut>
</shortcuts>
<string name="short_label_one">名称一</string>
<string name="short_label_two">名称二</string>
<string name="long_label_one">一个很长很长的长到你无法相信的名称一</string>
<string name="long_label_two">一个略长略长的长到你可以想象的名称二</string>
<string name="disable_hint_message">你确认要禁用该快捷方式吗?</string>
  • enabled 是否开启
  • icon 图标
  • shortcutDisabledMessage 关闭该快捷方式提示的信息
  • shortcutId 唯一标识
  • shortcutLongLabel 长标签,优先展示
  • shortcutShortLabel 短标签,长标签展示不下会展示短标签
  • intent 跳转至Activity的Intent
注意事项

通过xml创建的静态ShortCuts不可以通过代码动态修改与删除,只能通过xml去修改。

动态创建

使用ShortCuts相关的类以及方法即可快速实现动态快捷方式的添加、更改、删除等操作。

object ShortCutManager {

    fun createShortCuts(context: Context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            ShortcutManagerCompat.removeAllDynamicShortcuts(context)
            val shortCut = ShortcutInfoCompat.Builder(context, "shortCutId")
                .setShortLabel("搜索一下")
                .setLongLabel("搜索一下下")
                .setIcon(IconCompat.createWithResource(context, R.mipmap.ic_launcher))
                .setIntent(Intent(context,MainActivity::class.java).apply {
                    action = Intent.ACTION_VIEW
                })
                .build()
            ShortcutManagerCompat.pushDynamicShortcut(context, shortCut)
        }
    }
}

再合适的地方调用上面的方法即可实现添加ShortCuts,在添加之前删除了所有的动态快捷方式,但是并不会删除通过xml配置的静态快捷方式。
在这里插入图片描述

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

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

相关文章

中小企业面临怎样的数字化转型局面

当前&#xff0c;我国经济长期向好的基本面没有改变&#xff0c;但承受着“需求收缩、供给冲击、预期减弱”的三重压力&#xff0c;中小企业的数字化转型之路较之以往更加艰难、曲折。为帮助中小企业纾困解难、平稳渡过危机&#xff0c;需进一步优化政策“组合拳”&#xff0c;…

单片机中常用的轻量级校验算法

UART有一个奇偶校验&#xff0c;CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。 在自定义数据存储时&#xff0c;有经验的工程师都会添加一定校验信息。 你平时通信&#xff0c;或者数据存储时&#xff0c;你有用到校验信息吗&#xff1f;下面就介绍几种常见…

Java面试题总结 | Java面试题总结3-JVM模块(持续更新)

JVM 文章目录JVMJVM的内存组成模型java的内存模型定义了什么java的内存分布情况程序计数器是什么&#xff1f;堆、栈、方法区都存放的是什么堆和栈的区别类加载JMM主内存和本地内存交互操作volatile如何保证可见性volatile如何保证有序性happen-before了解过吗&#xff1f;内存…

【JS】BOM 详解(工作必备)

文章目录BOM一、History &#xff08;浏览器记录&#xff09;1.1、history.go&#xff08;指定页&#xff09;1.2、history.back&#xff08;上一页&#xff09;1.3、history.forword&#xff08;下一页&#xff09;二、Location&#xff08;浏览器地址&#xff09;2.1、操作属…

基于OpenCV的图片和视频人脸识别

目录 &#x1f969;前言 &#x1f356;环境使用 &#x1f356;模块使用 &#x1f356;模块介绍 &#x1f356;模块安装问题: &#x1f969;人脸检测 &#x1f356;Haar 级联的概念 &#x1f356;获取 Haar 级联数据 &#x1f357; 1.下载所需版本 &#x1f357; 2.安…

前后端不分离项目如何使用elementUI

首先&#xff0c;去官网下载element 的js和css和字体等文件 其次&#xff0c;分别将js和css 引入到项目 然后就可以使用了&#xff0c;使用方法和vue中使用element方法一致、

5款最新最实用的小软件,让你的工作和生活更轻松

我喜欢发现和分享一些好用的软件&#xff0c;我觉得它们可以让我们的工作和生活更加轻松和快乐。今天给大家介绍五款我最近发现的软件&#xff0c; GIF录制工具——Screen To Gif Screen To Gif是一款完全免费的GIF录制神器&#xff0c;可以让你轻松地录制屏幕、摄像头或画板…

学生信息管理案例

效果图&#xff1a; 业务模块&#xff1a; 点击录入按钮可以录入数据点击删除可以删除当前的数据 注意&#xff1a;本次案例&#xff0c;我们尽量减少dom操作&#xff0c;采用操作数据的形式。增加和删除都是针对数组的操作&#xff0c;然后根据数组数据渲染页面 核心思路:…

5款办公神器软件推荐:提高效率,享受分享

给大家分享一些优秀的软件工具,是一件让人很愉悦的事情&#xff0c;今天继续带来5款优质软件。 图床管理——PicGo PicGo是一款图床管理工具&#xff0c;可以快速上传图片到各种图床&#xff0c;并生成链接。你可以使用PicGo来管理你的图片资源&#xff0c;或者作为Markdown编…

STM32F4_定时器输入捕获详解

目录 1. 输入捕获简介 2. 输入捕获框图 3. 输入捕获模式 4. 相关寄存器 4.1 TIMx_ARR、TIMx_PSC 4.2 捕获/比较寄存器1&#xff1a;TIMx_CCMR1 4.3 捕获/比较使能寄存器 TIMx_CCER 4.4 中断使能寄存器 TIMx_DIER 5. 库函数配置输入捕获高电平脉冲宽度 6. 实验程序 6…

【4.14】今天讲两道TCP面试题

文章目录TCP Keepalive 和HTTP Keep-Alive是一个东西吗&#xff1f;TCP协议有什么缺陷TCP Keepalive 和HTTP Keep-Alive是一个东西吗&#xff1f; 对于这个问题&#xff0c;我们要先知道这两个KeepAlive分别代表什么&#xff1f; TCP的Keepalive是由TCP层&#xff08;内核层&a…

移远通信率先通过ISO/SAE 21434汽车网络安全管理体系认证

近日&#xff0c;移远通信车载前装BU获得了由国际独立第三方检测、检验和认证机构TV NORD颁发的ISO/SAE 21434汽车网络安全管理体系认证证书。 ISO/SAE 21434标准认证的通过&#xff0c;表明移远通信车载前装BU的网络安全风险管理满足了产品从概念设计、开发、生产、运营到售后…

我的面试八股(数据库)

数据库范式&#xff1f; 数据库范式有三种 1NF 第一范式&#xff0c;属性&#xff08;对应表中的字段&#xff09;不能再分割&#xff0c;就是这个字段只能是一个值&#xff0c;不能再分为多个其它字段了&#xff0c;1NF是所有关系型数据库的最基本要求。 2NF 第二范式&am…

Spring Security 02 搭建环境

搭建环境 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifa…

第31天-贪心-第八章 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

文章目录1. 买卖股票的最佳时机2. 跳跃游戏3. 跳跃游戏 ||1. 买卖股票的最佳时机 - LeetCode链接 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 …

docker安装jenkins安装流程(一)

1.下载安装jdk 官网&#xff1a;https://jdk.java.net/ https://www.oracle.com/java/technologies/downloads/ 上传到linux服务器 cd /usr mkdir jdk tar -zxvf 所要解压的文件名 编辑profile文件&#xff1a;vim /etc/profile 把光标移到最后一行&#xff0c;键盘按 i&…

技术分享 | 如何优雅的删除 Zabbix 的 history 相关历史大表

作者&#xff1a;徐文梁 爱可生DBA成员&#xff0c;一个执着于技术的数据库工程师&#xff0c;主要负责数据库日常运维工作。擅长MySQL,redis&#xff0c;其他常见数据库也有涉猎&#xff0c;喜欢垂钓&#xff0c;看书&#xff0c;看风景&#xff0c;结交新朋友。 本文来源&…

Vue动图数据表格,根据字段是否为空,控制表格列的隐藏和显示

所在前面的话&#xff0c;我是个前端小白&#xff0c;大佬请绕行&#xff0c;可能大佬觉得很简单&#xff0c;但是我真的花了好几个小时去解决&#xff0c;所以记录一下&#xff0c;下次也可以作为参考。 我主要是以第二种方式进行修改的 开门见山 简述问题&#xff1a;大家…

《这就是软件工程师》- 每位软件工程师值的看的一本书,尤其是刚刚步入IT行业的年轻人

文章目录第一部分&#xff5c;行业地图1、现实&#xff1a;为什么会有996&#xff1f;1&#xff09;行业处于特定的发展阶段2&#xff09;公司组织管理问题2、进阶&#xff1a;软件工程师的四大台阶1&#xff09;新手阶段【执行力】2&#xff09;进阶阶段【设计能力】3&#xf…

电子行业数字化工厂的发展现状如何

随着科技的不断发展&#xff0c;电子行业的生产制造方式也在不断地进步。数字化工厂建设是电子行业中的一个重要发展方向&#xff0c;它可以提高生产效率&#xff0c;降低生产成本&#xff0c;提高产品质量&#xff0c;减少人力资源的使用。本文将从数字化工厂的概念、发展历程…