Android 13 为应用创建快捷方式

news2025/1/4 19:14:21

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

来自官网的说明:

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

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

创建静态快捷方式

1.清单文件添加

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

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

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

        <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>

2.创建shortcuts.xml

创建 res/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="@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">
        <intent
            android:action="android.intent.action.VIEW"
            android:data="shortcut1"
            android:targetClass="com.test.luodemo.appwidget.ShortcutActivity"
            android:targetPackage="com.test.luodemo" />
    </shortcut>

    <shortcut
        android: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">
        <intent
            android: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);
        }
    }

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

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

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

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

相关文章

ADC位数、增益调制与参考电压

位数&#xff1a;12bit、10bit、8bit 一般就是对应的ADC值分别为&#xff1a;4095、1023、255&#xff0c;也就选用对应位数时ADC的最大值。 增益的作用 增益设置用于放大或缩小输入信号&#xff0c;使其适配到ADC的输入范围。增益设置可以通过配置SAADC的通道配置寄存器来实…

第一后裔The First Descendant开服时间、配置要求一览

第一后裔是一款采用虚幻5引擎打造的第三人称合作射击动作RPG&#xff0c;玩家将化身为一名继承者&#xff0c;通过各种任务和故事不断成长&#xff0c;为守护人类与对抗侵略者战斗。该作即将上线&#xff0c;为了不让玩家们错过这款精彩的游戏&#xff0c;本文整理了第一后裔上…

[行业原型] Web端原型案例:康欣医疗后台管理系统

​医疗管理系统是一个业务复杂&#xff0c;功能庞大的系统&#xff0c;以下为HIS医院管理系统的常见模块&#xff0c;供大家参考。 本周为大家带来Web端原型案例&#xff1a;康欣医疗后台管理系统&#xff0c;先上原型&#xff1a; 完整文档加班主任微信号 添加班主任回复 “1…

推荐两款电脑文件处理工具,强大到你不舍得卸载

EasyFileCount EasyFileCount是一款基于Java开发的多功能文件管理工具&#xff0c;旨在帮助用户更轻松地管理和优化他们的文件存储。以下是EasyFileCount的主要功能和特点&#xff1a; 查看文件夹大小&#xff1a;用户可以快速统计和查看文件夹的总大小&#xff0c;实时显示各…

基于C++实现的EventLoop与事件驱动编程

一&#xff0c;概念介绍 事件驱动编程&#xff08;Event-Driven&#xff09;是一种编码范式&#xff0c;常被应用在图形用户界面&#xff0c;应用程序&#xff0c;服务器开发等场景。 采用事件驱动编程的代码中&#xff0c;通常要有事件循环&#xff0c;侦听事件&#xff0c;…

Qt样式表及相关案例

一.Qt样式表介绍 Qt样式表是一个可以自定义部件外观的强大机制&#xff0c;样式表的概念、术语、语法均受到HTML的层叠样式表(Cascading Style Sheets,CSS)的启发。 样式表可通过QApplication::setStyleSheet()函数将其设置到整个应用程序上&#xff0c;也可以使用QWidget::se…

突然!某大客户核心凌晨突然崩溃....

这几天实在太忙&#xff0c;刚弄完文档。业务线的同事就找到我&#xff0c;说一个银行客户的核心系统昨晚出了故障&#xff0c;还没找到原因&#xff0c;希望能帮忙分析下。 从提供的信息来看是业务跑任务报错&#xff0c;遇到了Oracle-00600和ora-07445 错误。 Doing block re…

使用Python实现深度学习模型通常涉及以下几个步骤

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

2024年【焊工(初级)】实操考试视频及焊工(初级)考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 焊工&#xff08;初级&#xff09;实操考试视频根据新焊工&#xff08;初级&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将焊工&#xff08;初级&#xff09;模拟考试试题进行汇编&#xff0c;组成一…

Windows条件竞争提权漏洞复现(CVE-2024-300889)

漏洞原理 当内核将当前令牌对象的 _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION 复制到用户模式时&#xff0c;错误位于函数 AuthzBasepCopyoutInternalSecurityAttributes 内部&#xff0c;该模式的结构如下&#xff1a; //0x30 bytes (sizeof) struct _AUTHZBASEP_SECURIT…

有哪些方法可以恢复ios15不小心删除的照片?

ios15怎么恢复删除的照片&#xff1f;在手机相册里意外删除了重要的照片&#xff1f;别担心&#xff01;本文将为你介绍如何在iOS 15系统中恢复已删除的照片。无需专业知识&#xff0c;只需要按照以下步骤操作&#xff0c;你就能轻松找回宝贵的回忆。 一、从iCloud云端恢复删除…

台式机通过网线直连笔记本,台式机通过笔记本上网【解决台式机没有网络的问题】

一、总览 将笔记本电脑和台式机使用网线连接起来。在笔记本电脑上打开网络和共享中心&#xff0c;进入“更改适配器设置”选项&#xff0c;找到当前连接的网卡&#xff0c;右键点击选择“属性”。在网卡属性中&#xff0c;找到“共享”选项卡&#xff0c;勾选“允许其他网络用…

怎么打印加密的Excel文件,有哪些方法?

很多小伙伴都喜欢使用Excel来创建或是编辑表格文档&#xff0c;因为Excel中的功能十分的丰富且强大&#xff0c;在Excel中我们可以对表格文档进行各种操作。有的小伙伴可能在打印时需要给每一页表格添加页码&#xff0c;但又不知道该在哪里找到相关操作&#xff0c;其实很简单&…

elasticsearch重置密码

0 案例背景 Elasticsearch三台集群环境&#xff0c;对外端口为6200&#xff0c;忘记elasticsearch密码&#xff0c;进行重置操作 注&#xff1a;若无特殊说明&#xff0c;三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…

武汉星起航:深度洞察消费趋势,亚马逊美国站选品独具匠心

亚马逊美国站作为全球电商巨头的重要分支&#xff0c;其选品特点不仅反映了美国市场的消费趋势&#xff0c;更引领着全球消费者的购物潮流。从运动户外、宠物用品到美容个人护理&#xff0c;亚马逊美国站的选品策略始终紧跟市场脉搏&#xff0c;为消费者提供丰富多样、品质优良…

深入浅出:npm常用命令详解与实战

theme: smartblue npm是什么 npm&#xff08;Node Package Manager&#xff09;是Node.js平台的默认包管理器&#xff0c;它让JavaScript开发者能够轻松地共享、管理和使用彼此编写的代码模块。npm不仅仅是一个安装工具&#xff0c;它还是一个全面的生态系统&#xff0c;用于发…

应用监控pinpoint调研

参考 https://blog.csdn.net/Rose_juvenile/article/details/135285508?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-135285508-blog-132330996.235^v43^pc_blog_bottom_relevance_base6&spm1001.2101.3001.4242.1&a…

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

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

算法力扣刷题记录十【19.删除链表的倒数第N个节点】

前言 链表练习&#xff0c;继续 题目&#xff1a;力扣【19.删除链表的倒数第N个节点】 题目阅读 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1…

使用Anaconda Prompt安装cv2模块

问题 使用命令&#xff1a; conda install opencv-python出现找不到包 使用命令&#xff1a;pip install opencv-python下载很慢&#xff08;kb/s速度&#xff09;而且会由于断连报错&#xff08;不一定是网的问题&#xff09; 解决方案 使用清华镜像下载&#xff0c;这样…