ShortcutManager桌面app图标长按快捷入口

在这里插入图片描述

1.动态方式实现

1.kotlin版代码

1.1 直接实现

对应代码:

fun shortcut(){if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {val scManager: ShortcutManager = getSystemService(ShortcutManager::class.java)//跳转Secondval secondIntent = Intent("secondback",android.net.Uri.EMPTY,this,Test::class.java) //此处的Test即为回退页面,快捷方式跳转的页面按下返回键后显示的页面val infoPublishPai: ShortcutInfo =ShortcutInfo.Builder(this, "two").setShortLabel("go second").setRank(1).setIcon(android.graphics.drawable.Icon.createWithResource(this,R.drawable.icon_shortcut_pai)).setIntents(arrayOf<Intent>(secondIntent,Intent(this,Second::class.java).setAction("second"))).build()val list: MutableList<ShortcutInfo> = java.util.ArrayList<ShortcutInfo>()list.add(infoPublishPai)if (scManager != null) {scManager.setDynamicShortcuts(list)}}
}

2.2 设置解析实现

上面是直接设置时就指定跳转的页面,还有一种方式是设置后解析跳转,如下:

package com.wsx.shortcutsdemo

import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 方式1 在AndroidManifest.xml中

// 方式2
// shortcut()

// 方式3
initShortcuts()
jumpShortcuts()
}

fun shortcut(){if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {val scManager: ShortcutManager = getSystemService(ShortcutManager::class.java)//跳转Secondval secondIntent = Intent("secondback",android.net.Uri.EMPTY,this,Test::class.java) //此处的Test即为回退页面,快捷方式跳转的页面按下返回键后显示的页面val infoPublishPai: ShortcutInfo =ShortcutInfo.Builder(this, "two").setShortLabel("go second").setRank(1).setIcon(android.graphics.drawable.Icon.createWithResource(this,R.drawable.icon_shortcut_pai)).setIntents(arrayOf<Intent>(secondIntent,Intent(this,Second::class.java).setAction("second"))).build()val list: MutableList<ShortcutInfo> = java.util.ArrayList<ShortcutInfo>()list.add(infoPublishPai)if (scManager != null) {scManager.setDynamicShortcuts(list)}}
}
/*** 7.1以上支持shortcuts*/
private fun initShortcuts() {if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {val scManager: ShortcutManager = getSystemService(ShortcutManager::class.java)//跳转Testval testIntent = Intent(Intent.ACTION_MAIN,android.net.Uri.EMPTY,this,MainActivity::class.java)//此处需为入口页面,否则快捷方式目标页面跳转不了testIntent.putExtra("shortcuts", "test")//自定义的规则,解析跳转时用到val infoForumPublish: ShortcutInfo = ShortcutInfo.Builder(this, "testid").setShortLabel("测试一下").setRank(0).setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.icon_shortcut_post)).setIntents(arrayOf<Intent>(testIntent)).build()

// action ,id 可以随便填
//跳转Second
val secondIntent = Intent(“secondaction”,android.net.Uri.EMPTY,
this,MainActivity::class.java)
secondIntent.putExtra(“shortcuts”, “second”)
val infoPublishPai: ShortcutInfo =ShortcutInfo.Builder(this, “secondid”)
.setShortLabel(“go second”)
.setRank(1)
.setIcon(android.graphics.drawable.Icon.createWithResource(this,R.drawable.icon_shortcut_pai))
.setIntents(arrayOf(secondIntent))
.build()
val list: MutableList = java.util.ArrayList()
list.add(infoForumPublish)
list.add(infoPublishPai)
if (scManager != null) {
scManager.setDynamicShortcuts(list)
}
}
}

// override fun onNewIntent(intent: Intent?) {
// super.onNewIntent(intent)
// jumpShortcuts()
// }

private fun jumpShortcuts() {val shortcuts: String? =intent.getStringExtra("shortcuts")when(shortcuts){"test"->{startActivity(Intent(this,Test::class.java))}"second"->{startActivity(Intent(this,Second::class.java))}}
}

}

2.java版代码

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initShortcuts();
jumpShortcuts();
}
private void initShortcuts() {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {
ShortcutManager scManager = getSystemService(ShortcutManager.class);
Intent forumPublishIntent = new Intent(“test”, Uri.EMPTY, this, MainActivity.class);
forumPublishIntent.putExtra(“shortcuts”, “test”);
ShortcutInfo infoForumPublish = new ShortcutInfo.Builder(this, “test”)
.setShortLabel(“测试一下”)
.setIcon(Icon.createWithResource(this, R.drawable.icon_shortcut_post))
.setIntents(new Intent[]{
forumPublishIntent
})
.build();
Intent paiPublishIntent = new Intent(“second”, Uri.EMPTY, this, MainActivity.class);
paiPublishIntent.putExtra(“shortcuts”,“second”);
ShortcutInfo infoPublishPai = new ShortcutInfo.Builder(this, “second”)
.setShortLabel(“go second”)
.setIcon(Icon.createWithResource(this, R.drawable.icon_shortcut_pai))
.setIntents(new Intent[]{
paiPublishIntent
})
.build();
List list = new ArrayList<>();

        list.add(infoForumPublish);list.add(infoPublishPai);if (scManager != null) {scManager.setDynamicShortcuts(list);}}
}private void jumpShortcuts() {String shortcuts = getIntent().getStringExtra("shortcuts");switch (shortcuts) {case "test":startActivity(new Intent(this,Test.class));break;case "second":startActivity(new Intent(this,Second.class));break;}
}

}

3.ShortcutManager API释义

setRank设置快捷方式的顺序

新建:方法setDynamicShortcuts() 可以添加或替换所有的shortcut;方法addDynamicShortcuts() 来添加新的shortcut到列表中,超过最大个数会报异常
更新:方法updateShortcuts(List shortcutInfoList) 更新已有的动态快捷方式;
删除:方法removeDynamicShortcuts(List shortcutIds) 根据动态快捷方式的ID,删除已有的动态快捷方式;方法removeAllDynamicShortcuts() 删除掉app中所有的动态快捷方式;
List getDynamicShortcuts() : 得到所有的动态shortcuts;

2.静态方式实现

1.在app的AndroidManifest.xml文件中,找到入口Activity添加….指向定义Shortcuts的资源文件。

即红色标记对应的activity ,添加绿色部分代码

2.创建Shortcuts的资源文件,res/xml/shortcuts.xml文件

<?xml version="1.0" encoding="utf-8"?> 运行即可,至此,静态方式实现就结束了。

3.属性释义

shortcutId:shortcut唯一标识符,相同的shortcutId会被覆盖。(必设属性)
enable:shortcut是否启用,true启用,false是禁用(若设置为false,不如删除掉该快捷方式)(可选属性)
icon:显示在快捷方式左边的图标。(可选属性)
shortcutShortLabel : shortcut的简要说明,这项是必须的。(必设属性)
shortcutLongLabel:当launcher的空间足够时将会显示shortcut的长文本描述,不宜过长,如果过长或未设置时会显示shortcutShortLabel (可选属性)
intent : 这里定义快捷方式被点击之后将会打开的intent (必设属性)
shortcutDisabledMessage : 当你禁用了shortcut之后,它将不会显示在用户长按应用图标后打开的快捷方式里,但是用户可以把一个快捷方式拖拽到launcher的某个页面成为Pinned Shortcut,被禁用之后这个快捷方式就会显示为灰色,点击这个Pinned Shortcut则会显示一个内容为shortcutDisabledMessage的Toast。(可选属性)

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

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

相关文章

MAC OSX 快捷方式更换图标

1、MAC OSX快捷方式创建图标 右键快捷方式——显示简介 将你的icon图片文件&#xff08;大小为128x128像素&#xff09;拖入当前图标位置 2、修改你的icon图标文件 有时你会需要让你的桌面图标看起来更加统一&#xff0c;这时你就需要修改你的图标 打开PS&#xff0c;新建1…

正大国际期货:用狼性思维参与外盘期货

投资源于生活&#xff0c;而生活启示了投资交易的方法。因为我们知道在地球上&#xff0c;除了人类&#xff0c;狼应该是最聪明智慧的动物了&#xff0c;那么在狼的智慧中&#xff0c;有怎样的期货投资启示呢&#xff1f;下面正大IxxxuanI详细给大家讲解一下&#xff01; 1、当…

欧元区通胀率升至9.1% 将跟随美联储“鹰派”步伐?如何使资产保值成为现实需要

欧盟统计局数据显示&#xff0c;由于能源和食品价格持续飙升&#xff0c;欧元区8月调和CPI同比上升9.1%&#xff0c;距离两位数通胀近在咫尺。 伴随着通胀数据屡创新高&#xff0c;摩根大通、高盛和美国银行的分析师均预计&#xff0c;欧央行将在下周的会议上加息75个基点&…

外汇天眼:美联储认为美国房价有大跌的风险!

美联储周五表示&#xff0c;在超低利率的背景下&#xff0c;近年来房价大幅上涨后&#xff0c;高位房价可能会急剧下跌。 “由于估值处于高位&#xff0c;房价可能对冲击特别敏感&#xff0c;”美联储在周五发布的半年度金融稳定报告中表示。 央行表示&#xff0c;尽管最近随…

股票和外汇究竟哪个更存在风险呢?

股票和外汇究竟哪个更存在风险呢&#xff1f; 1、股票T1交易制度&#xff0c;今天买入&#xff0c;明天才能卖出&#xff1b;外汇T0交易制度&#xff0c;随时买入&#xff0c;随时可以卖出。流动性方面看&#xff0c;外汇风险较小。 2、外汇手续费很低&#xff0c;只有买入时扣…

外汇天眼:美元多头仍在掌控中 美联储将加大鹰派立场力度

美元多头不太可能在短期内被推翻&#xff0c;因为美联储(fed)可能会在其普遍预期的加息之后&#xff0c;在本周发表强硬言论&#xff0c;这可能迫使交易员重新考虑利率在见顶前能达到多高。 衡量美元兑一篮子六种主要货币贸易加权汇率的美元指数下跌0.1%&#xff0c;至109.44点…

外汇天眼:美国中期选举共和党若大获全胜!美元未来走势不利

周二&#xff0c;美元企稳&#xff0c;因为交易员们展望美国中期选举&#xff0c;而中国放松对冠状病毒的限制的兴奋情绪有所减弱&#xff0c;这一直在提振投资者人气&#xff0c;并令避险的美元承压。 中期选举的最终结果可能需要几天的时间&#xff0c;但预测显示&#xff0c…

外汇天眼:利空美元!2023年美国经济将如履薄冰?各大银行预测整体不乐观!

高盛表示&#xff0c;美国经济可能避免衰退。摩根士丹利预计&#xff0c;美国经济在2023年只是避开了衰退&#xff0c;但着陆并不那么软。瑞士信贷认为&#xff0c;美国明年可以避免经济下滑。摩根大通警告称&#xff0c;明年很有可能出现经济衰退。美国银行预测2023年第一季度…

理财实践之港股和美股的投资办法、下篇

文章目录 一、美股投资的主要风险有&#xff1a;二、投资美股的注意事项三、选出好公司四、等待好价格五、举例 一、美股投资的主要风险有&#xff1a; 市场风险 – 因股市价格大幅下跌导致股票投资者亏损的风险。这是很正常的市场行为&#xff0c;对于普通投资者来说这是风 …

chatGPT人工智能系统软件开发

ChatGPT是一个由OpenAI开发的人工智能语言模型&#xff0c;可以实现自然语言处理、对话生成等功能。要开发一个类似ChatGPT的人工智能系统软件&#xff0c;可以遵循以下步骤&#xff1a; 确定应用场景&#xff1a;确定人工智能系统软件要解决的问题和应用场景&#xff0c;例…

BERT论文解读: Pre-training of Deep Bidirectional Transformers for Language Understanding(2018)

论文总结 BERT模型的提出几乎就是针对于GPT的&#xff0c;文章实验部分主要就是在和GPT进行效果对比。因此&#xff0c;BERT模型总体上就是在GPT提出的基础上&#xff0c;进行了一部分创新和优化&#xff0c;提出了Bidirectional双向语言模型&#xff0c;预训练阶段采用遮罩语…

开源 LLM (大语言模型)整理(一)

Large Language Model (LLM) 即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。 所谓 "语言模型",就是只用来处理语言文字(或者符号体系)的 AI 模型,发现其中的规律,可以根据提示 (pr…

Microsoft 帐户异常登录活动,QQ邮箱代收hotmail邮件不成功

最近打算让QQ邮箱代收hotmail的邮件&#xff0c;总是提示不成功&#xff0c;而且homail里的备用邮箱一直到“安全阻止登录”邮件&#xff0c;同时QQ添加代收也不成功。而且关闭了二步验证还是不行。经过和微软客服沟通&#xff0c;说是为了安全。 好吧&#xff0c;只能自己想办…

邮箱客户端 gmail支持_如何联系Gmail支持

邮箱客户端 gmail支持 Although you may not be able to directly contact Gmail support without subscribing to G Suite for businesses, there are a couple of ways to get the answers you’re looking for online. Let’s look at how you can get help with your Gmail…

网易邮箱账号注册twitter开发者api权限,无法收到确认邮件

问题是这样的&#xff1a;今天想去申请一个访问twitter的开发者api权限&#xff0c;但是最后一步确认邮件&#xff0c;网易邮箱收不到 因为我的twitter账号是网易163邮箱&#xff0c;twitter发验证码&#xff0c;邮箱都能正常收到&#xff0c;以为没问题&#xff0c;谁知道在最…

通过 JavaMail 访问 Hotmail 邮箱(hotmail不提供smtp和pop3服务)

简介&#xff1a; 相信许多人都有 MSN 聊天工具的帐号&#xff0c;例如 abchotmail.com &#xff0c;这个账号其实也是一个邮件地址&#xff0c;可以进行正常的邮件收发功能&#xff0c;你可以通过网址 http://www.hotmail.com 来访问和操作这个邮箱进行邮件的收发。但是这个邮…

C# SmtpClient好像不支持STARTTLS,outlook邮箱不能发了

最近发现我之前的程序不能用了。于是我想代替程序&#xff0c;于是找到MailKit了&#xff0c;我先试一下水。 using System; using System.Text; using System.Net.Mail; using System.Net;namespace sendmail {internal class Program{static void Main(string[] args){try{Sm…

Outlook和Foxmail里设置Gmail(Google)谷歌企业邮箱

在大多数客户眼中&#xff0c;Gmail堪称完美邮箱的代表&#xff0c;支持POP3/SMTP&#xff0c;超大容量&#xff0c;绝对强大的反垃圾功能&#xff0c;发国外不退信&#xff0c;由世界最大的Google提供&#xff0c;稳定放心…… 注册开通地址&#xff1a; http://www.google.c…

小红书达人等级划分?小红书垂类达人怎么看

小红书的种草能力和社区加电商的模式&#xff0c;吸引了越来越多用户&#xff0c;也使得越来越多品牌将目光放在小红书笔记推广上。那么今天就和大家介绍一下小红书达人等级划分情况和小红书达人种草力度&#xff0c;供大家参考了解。 一、小红书达人等级划分 小红书达人等级划…

【报告分享】2021小红书投放运营指南书-小红书(附下载)

如需查看完整报告和报告下载或了解更多&#xff0c;公众号&#xff1a;行业报告智库 摘要:如果说是产品种草的话&#xff0c;一定要给人一种真实试用后产出的内容&#xff0c;再加上客观表达&#xff0c;围绕产品特点及个人风格进行描述&#xff0c;分享真实感受&#xff0c;不…