- 1、桌面长按应用图标添加快捷方式
- 2、应用内通过点击事件触发
- 注意事项
记录下桌面快捷方式需求,在Android O及后续更高平台上,应用在桌面创建快捷方式的方法有了较多变更,从交互方式上趋向于让用户二次确认。主要效果是在桌面上生成一个和普通应用一样的图标,点击进入对应页面。
1、桌面长按应用图标添加快捷方式7.0新特性Shortcut
//桌面长按添加快捷方式 fun addMoreItem(mContext: Context, cls: Class) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { val arr = arrayOf("da", "xiao", "xiao") val shortcutInfoList: MutableList2、应用内通过点击事件触发= ArrayList() val shortcutManager: ShortcutManager = mContext.getSystemService (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 } }
8.0新特性
//应用内 弹窗添加快捷方式 fun注意事项addShortCut( context: Context, targetClass: Class , backClass: Class , 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、添加数量不同机型限制不一样 尽量不要过多创建