android某个功能和应用快捷方式

android某个功能和应用快捷方式

最近接受到一个任务,给应用内的一个功能点创建一个快捷方式,方便用户操作快捷、
一,第一种方式,只适用Build.VERSION.SDK_INT>25 以上的版本

   /** shortcutId  快捷方式的标示,自己定义 * 固定快捷方式*  Build.VERSION.SDK_INT>25以上*/private fun createQuestPinShortcut(context: Context) {if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) {if (mShortcutManager == null) {mShortcutManager = context.getSystemService(ShortcutManager::class.java)}var isExit = falsemShortcutManager?.pinnedShortcuts?.forEach {if (shortcutId == it.id) {//判断快捷方式是否已存在isExit = trueToast.showToast(context, "快捷方式已存在")return@forEach}}if (mShortcutManager?.isRequestPinShortcutSupported == true && !isExit) {val intent = Intent(context, ShortcutAlarmCallActivity::class.java)intent.action = shortcutActionintent.action = Intent.ACTION_VIEWval pinShortcutInfo = ShortcutInfo.Builder(context, shortcutId).setShortLabel(context.getString(R.string.shortcut_alarm_long)).setLongLabel(context.getString(R.string.shortcut_alarm_long)).setIcon(Icon.createWithResource(context, R.mipmap.icon_alarm_emergency)).setIntent(intent).build()// 注册固定快捷方式成功广播val intentFilter = IntentFilter()intentFilter.addAction(shortcutBroadcast)val receiver = ShoutCutReceiver()context.registerReceiver(receiver, intentFilter)val flag = PendingIntent.FLAG_IMMUTABLE or FLAG_UPDATE_CURRENTval pinnedShortcutCallbackIntent = Intent(shortcutBroadcast)val successCallback = PendingIntent.getBroadcast(context,0,pinnedShortcutCallbackIntent,flag)mShortcutManager?.requestPinShortcut(pinShortcutInfo, successCallback.intentSender)}}}

二、第二种方式 适配android 8以下的版本和以上的版本

  /*** 兼容创建快捷方式* @param context Context*/open fun addShortCutCompact(context: Context) {if (isShortCutExist(context, context.getString(R.string.shortcut_alarm_long))) {Toast.showToast(context, "快捷方式已存在")return}if (!ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {Toast.showToast(context, "无法创建快捷方式")return}val shortcutInfoIntent = Intent()shortcutInfoIntent.setClassName(context, className)shortcutInfoIntent.action = Intent.ACTION_VIEW //action必须设置,不然报错val info = ShortcutInfoCompat.Builder(context, shortcutId).setIcon(IconCompat.createWithResource(context, R.mipmap.icon_alarm_emergency)).setShortLabel(context.getString(R.string.shortcut_alarm_long)).setIntent(shortcutInfoIntent).build()// 注册固定快捷方式成功广播val intentFilter = IntentFilter()intentFilter.addAction(shortcutBroadcast)val receiver = ShoutCutReceiver()context.registerReceiver(receiver, intentFilter)val pinnedShortcutCallbackIntent = Intent(shortcutBroadcast)val flag = PendingIntent.FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT//当添加快捷方式的确认弹框弹出来时,将被回调val shortcutCallbackIntent = PendingIntent.getBroadcast(context,0,pinnedShortcutCallbackIntent,if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) flag else 0)ShortcutManagerCompat.requestPinShortcut(context,info,null)}

三、用第二种方式可以用以下方法判断是否存在快捷方式

   /*** 判断是否存在快捷方式* @param context Context* @return Boolean*/private fun isShortCutExist(context: Context, title: String): Boolean {var isInstallShortcut = falseif (TextUtils.isEmpty(title)) {return false}val contentResolver: ContentResolver = context.contentResolvertry {val authority = "com.android.launcher3.settings"val url = "content://$authority/favorites?notify=true"val contentUrl: Uri = Uri.parse(url)val strArray = arrayOf("title", "iconResource")val cursor: Cursor? = contentResolver.query(contentUrl, strArray, "title=?",arrayOf(title.trim()), null)cursor?.let {if (it.count > 0) {isInstallShortcut = true}if (!it.isClosed) {it.close()}}} catch (e: Exception) {e.toString()}return isInstallShortcut}****## 最近要记得添加权限****```kotlin<!-- 添加快捷方式 --><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /><!-- 移除快捷方式 --><uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /><!-- 查询快捷方式4.4以上 --><uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" /><uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />

如果要添加创建成功提示`

`class ShoutCutReceiver: BroadcastReceiver() {override fun onReceive(context: Context, intent: Intent) {Log.i("ShoutCutReceiver", "onReceive: 创建成功")Toast.showToast(context, R.drawable.icon_succes_tip,"创建成功")}
}

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

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

相关文章

通过 RIOT 将 AWS ElastiCache 迁移到阿里云 Tair

本文通过示例介绍了 RIOT 如何轻松地将数据从 AWS ElastiCache 迁移到云原生内存数据库&#xff08;如 Tair 和云数据库 Redis 版&#xff09;。 1. 准备资源迁移 1.1. 源代码 AWS ElastiCache cache.r6g.xlarge。它有三个数据分片&#xff0c;与 Redis 6.2 兼容。 AWS EC2 t2.…

TypeScript中的基本类型

提示&#xff1a;TypeScript中的基本类型 文章目录 前言基本类型1.类型声明2.自动类型判断3.类型断言 前言 TypeScript &#xff08;计算机编程语言&#xff09;简称&#xff1a;TS&#xff0c;是 JavaScript 的超集。简单来说就是&#xff1a;JS 有的 TS 都有。JS写的代码在TS…

Video anomaly detection with spatio-temporal dissociation 论文阅读

Video anomaly detection with spatio-temporal dissociation 摘要1.介绍2.相关工作3. Methods3.1. Overview3.2. Spatial autoencoder3.3. Motion autoencoder3.4. Variance attention module3.5. Clustering3.6. The training objective function 4. Experiments5. Conclusio…

白酒行业@2023: 「库存」的烦恼

【潮汐商业评论/原创】 不久前&#xff0c;中国酒类流通协会官方微信通知&#xff0c;“经销商及代理商积压库存过多&#xff0c;无法进行正常采购”&#xff0c;原计划于12月11至13日举办的2023杭州国际酒业博览会延期&#xff0c;将与2024北京国际酒业博览会合并。 库存过多…

Reinfocement Learning 学习笔记PartⅠ

文章目录 Reinfocement Learning一、基本概念二、贝尔曼公式&#xff08;bellman equation&#xff09;2.1 为什么return重要2.2 state value function的定义2.3 贝尔曼公式推导2.4 如何求解贝尔曼公式2.5 Action value的定义 三、贝尔曼最优公式&#xff08;bellman optimalit…

facebook广告投放技巧

Facebook广告投放的技巧包括以下几个方面&#xff1a; 明确目标受众&#xff1a;在投放广告之前&#xff0c;需要明确目标受众是谁&#xff0c;包括他们的年龄、性别、地域、兴趣等方面的特征。这样有助于更好地定位广告&#xff0c;提高广告的精准度和效果。制定广告策略&…

山西电力市场日前价格预测【2023-12-11】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-11&#xff09;山西电力市场全天平均日前电价为535.55元/MWh。其中&#xff0c;最高日前电价为689.29元/MWh&#xff0c;预计出现在09:00。最低日前电价为422.38元/MWh&#xff0c;预计…

【杂】Windows解决端口占用

1.查看端口占用netstat 首先&#xff0c;可以看一下这个命令的帮助 C:\Users\Administrator>netstat -h显示协议统计和当前 TCP/IP 网络连接。NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]-a 显示所有连接和侦听端口。-b …

许战海战略文库|美国品牌实践:从品类品牌向产业品牌转变

引言&#xff1a;《品类战略》是上世纪70年代特劳特和里斯所推崇的定位理论,强调“品类聚焦是唯一正确的战略“新品类要使用新品牌”等战略思想,并对品牌延伸等多元化品牌进行批判,并由中国代理人传入中国&#xff0c;从2002年至今滋生了众多品类品牌,阻碍中国经济发展。 在今天…

是谁,在参与数十亿美元的量子市场?

量子技术是最不为人们所了解、但却最有希望在未来几年颠覆商业和产业的进步技术之一。 很少有像量子信息科学市场这样小的市场能引起如此热烈的讨论。上周&#xff0c;根据Hyperion Research在圣克拉拉举行的Q2B硅谷会议上发布的年度量子计算&#xff08;QC&#xff09;市场更新…

为养宠家庭量身打造,352 X63 Pet宠物专效空气净化器“养宠安馨,人宠共护”

当下,养宠人群日益增多,宠物在给家庭带来了欢乐的同时,也产生了一系列困扰,如何在健康环境中快乐养宠,成为很多家养宠家庭的新需求。成立于2014年的北京三五二环保科技有限公司是一家立足于家庭洁净空气和安全用水领域的科技创新型公司。以“安全、健康、舒适”等消费需求为核心…

桌面便签软件哪个好用?可以放在桌面上的便签软件使用哪个

在现代快节奏的生活中&#xff0c;我们时常感到生活与工作的节奏难以协调。繁琐的工作日程与待办任务繁杂交织&#xff0c;往往让我们束手无策&#xff0c;无法高效地进行协调与分配。 桌面便签工具成为了我们处理这些挑战的得力助手。它不仅能够随时提醒我们完成任务&#xf…

如何本地搭建WampServer并结合cpolar内网穿透实现远程访问

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

win10编译golang程序报病毒错误

错误为command-line-arguments: open C:\Users\ADMINI~1\AppData\Local\Temp\go-build435947867\b001\exe\a.out.exe: Operation did not complete successfully because the file contains a virus or potentially unwanted software. 解决办法&#xff0c;将Local/Temp目录添…

【Linux】之进程间通信

0x00.概述 本文将基于linux系统介绍进程间通信的几种方式&#xff0c;包括匿名管道&#xff0c;命名管道&#xff0c;systemV的共享内存等&#xff0c;全是干货&#xff0c;无废话 0x01.匿名管道 匿名管道&#xff1a; 通过调用 pipe 函数创建的&#xff0c;它在内存中创建一…

c++ 常用的一些宏定义

#include<iostream> #include <windows.h> #include <string> using namespace std;#define Conn(x,y) x##y //表示x连接y #define tochar(x) #x //给x加上单引号&#xff0c;结果返回是一个const char #define tostring(x) #x //给x加双引号 返回char co…

【毕业设计之Android系列】智能家居远程控制系统设计

智能家居远程控制系统设计 摘 要 该系统是一种基于Android平台的应用程序&#xff0c;可以通过网络连接实现对家居设备的远程控制。其主要功能包括家居设备的开关控制、温度调节、音乐播放、安防监控等。系统的设计需要考虑硬件、软件、数据传输、安全性和扩展性等因素&#xf…

Python基本语法及高级特性总结

1. Python基本语法 1.1 变量和数据类型 在Python中&#xff0c;变量不需要预先声明&#xff0c;可以直接赋值。Python是一种动态类型语言&#xff0c;变量的类型会根据赋值的对象自动确定。例如&#xff1a; a 10 # a是整数类型变量 b 3.14 # b是浮点数类型变量 c …

基于OHTPPS实现网站HTTPS访问

前言 笔者近期为网站配置HTTPS的域名&#xff0c;查找了大量方案&#xff0c;最近寻得一个不错的解决方式&#xff0c;通过OHTTPS获取免费的证书并部署到阿里云服务器上。 步骤 到OHTTPS官网注册账号 官方地址如下&#xff0c;读者可以先行到官网注册一下账号&#xff0c;笔…