IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android 创建桌面快捷方式 ShortCut -> 正文阅读

[移动开发]android 创建桌面快捷方式 ShortCut

记录下桌面快捷方式需求,在Android O及后续更高平台上,应用在桌面创建快捷方式的方法有了较多变更,从交互方式上趋向于让用户二次确认。主要效果是在桌面上生成一个和普通应用一样的图标,点击进入对应页面。

1、桌面长按应用图标添加快捷方式

7.0新特性Shortcut

    //桌面长按添加快捷方式
    fun addMoreItem(mContext: Context, cls: Class<Any>) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
            val arr = arrayOf("da", "xiao", "xiao")
            val shortcutInfoList: MutableList<ShortcutInfo> = ArrayList()
            val shortcutManager: ShortcutManager =
                mContext.getSystemService<ShortcutManager>(ShortcutManager::class.java)
            shortcutManager.maxShortcutCountPerActivity //得到,使用ShortcutInfo.Builder设置属性
            for (i in 0..1) {
                val intent = Intent(mContext, cls::class.java)
                intent.action = Intent.ACTION_VIEW
                intent.putExtra("msg", "我和" + "聊天")
                val info = ShortcutInfo.Builder(mContext, "id$i")
                    .setShortLabel(arr[i])
                    .setLongLabel("朋友:" + arr[i])
                    .setIcon(Icon.createWithResource(mContext, R.drawable.icon))
                    .setIntent(intent)
                    .build()
                shortcutInfoList.add(info)
            }
            shortcutManager.dynamicShortcuts = shortcutInfoList
        }
    }

2、应用内通过点击事件触发

在这里插入图片描述

8.0新特性

 //应用内 弹窗添加快捷方式
    fun <T> addShortCut(
        context: Context,
        targetClass: Class<T>,
        backClass: Class<T>,
        title: String,
        shortCutId: String,
        tagId:String
    ) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
            val shortcutManager =
                context.getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager
            if (shortcutManager.isRequestPinShortcutSupported) {
              for (info in shortcutManager.pinnedShortcuts) {
                if (tagId == info.id) {
                    //判断快捷方式是否已存在
                    isExit = true
                }
            }
            //构建点击intent
                val shortcutInfoIntent = Intent(context, targetClass::class.java)
                shortcutInfoIntent.action = Intent.ACTION_VIEW //action必须设置,不然报错
                val info = ShortcutInfo.Builder(context, shortCutId)
                    .setIcon(Icon.createWithResource(context, R.drawable.icon))
                    .setShortLabel(title).setIntent(shortcutInfoIntent).build()
                //当添加快捷方式的确认弹框弹出来时,将被回调
                val shortcutCallbackIntent = PendingIntent.getBroadcast(
                    context, 0, Intent(
                        context,
                        backClass::class.java
                    ), PendingIntent.FLAG_UPDATE_CURRENT
                )
                shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.intentSender)
            } else {
                Toast.makeText(context, "设备不支持在桌面创建快捷图标!", Toast.LENGTH_LONG).show()
            }
        }

    }
    

注意事项

1、创建成功回调 shortcutCallbackIntent 可以设置发送action,在对应类进行注册广播并接收action事件
2、在华为或者荣耀手机需要申请创建桌面快捷方式权限
var isCreateSuccess= shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.intentSender)
可以通过isCreateSuccess 这个返回值 判断是否开启权限
3、在小米红米手机需要申请创建桌面快捷方式权限 无法判断是否开启权限 可以增加提示弹窗,参考支付宝实现
4、不同的机型效果不一,有点快捷方式右下角会自动添加应用logo
5、添加数量不同机型限制不一样 尽量不要过多创建

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:12:58  更:2022-06-29 19:14:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 3:33:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码