Android 桌面图标长按快捷入口(Shortcut7.1.1API25+)

Posted Android-kongqw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 桌面图标长按快捷入口(Shortcut7.1.1API25+)相关的知识,希望对你有一定的参考价值。

android 桌面图标长按快捷入口(Shortcut、7.1.1、API25+)

Android 7.1.1(API 25)以后支持的功能,在桌面长按应用图标,可以设置快捷方式。

静态设置

res -> xml-v25 下创建 shortcuts 配置文件,例如: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="@mipmap/ic_launcher"
        android:shortcutDisabledMessage="@string/app_name"
        android:shortcutId="id1"
        android:shortcutLongLabel="@string/app_name"
        android:shortcutShortLabel="@string/app_name">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="$启动的Activity,例如:com.xxx.MainActivity"
            android:targetPackage="$你的包名" />

        <categories android:name="android.shortcut.conversation" />
    </shortcut>

</shortcuts>

AndroidManifest.xml 中添加shortcuts.xml配置,要添加在桌面图标Activity标签下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxx">
    ...
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.ShortcutsSample">
        <activity android:name=".MainActivity">
            <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>
    </application>

</manifest>

完成

动态设置

初始化管理器

private val mShortcutManager: ShortcutManager? = context.getSystemService(ShortcutManager::class.java)

获取快捷入口最大可添加数量

// 获取可设置快捷图标的最大数量
val maxShortcutCount = mShortcutManager?.maxShortcutCountPerActivity ?: 0

添加快捷入口(伪代码)

需要注意的是,在添加快捷入口的时候,要判断数量不能超过可以添加的最大数量,如果超过最大数量会报错。

val shortcutList = ArrayList<ShortcutInfo>()

val shortcutInfo1 = ShortcutInfo.Builder(context, shortcutEntity.id)
            .setShortLabel(shortcutEntity.content)
            .setLongLabel(shortcutEntity.content)
            // intent 可以打开某个app,或者打开其他意图
            .setIntent(intent)
            	// 显示一个Iocn
            // .setIcon(Icon.createWithResource(context, R.mipmap.ic_launcher))
            .setIcon(icon)
            .build()
...
shortcuts.add(shortcutInfo1)
shortcuts.add(shortcutInfo2)
shortcuts.add(shortcutInfo3)
// 可添加多个
...

// 获取可设置快捷图标的最大数量
val maxShortcutCount = mShortcutManager?.maxShortcutCountPerActivity ?: 0

if (shortcutList.size > maxShortcutCount) 
    mShortcutManager?.dynamicShortcuts = shortcutList.subList(0, maxShortcutCount)
 else 
    mShortcutManager?.dynamicShortcuts = shortcutList

获取已经保存到桌面的快捷入口

val pinnedShortcuts = mShortcutManager?.pinnedShortcuts

设置快捷入口为不可用状态

val pinnedShortcuts = mShortcutManager?.pinnedShortcuts
val shortcutIds = ArrayList<String>()
pinnedShortcuts?.forEach  shortcutInfo -> shortcutIds.add(shortcutInfo.id) 
mShortcutManager?.disableShortcuts(shortcutIds, "打样了")

移除全部快捷入口

mShortcutManager?.removeAllDynamicShortcuts()

this all

以上是关于Android 桌面图标长按快捷入口(Shortcut7.1.1API25+)的主要内容,如果未能解决你的问题,请参考以下文章

uniapp 安卓快捷方式插件(桌面长按app图标) Ba-Shortcut

uniapp 安卓快捷方式插件(桌面长按app图标) Ba-Shortcut

如果更改、添加长按APP图标弹出的快捷方式?

Android桌面图标快捷方式

【Android图标拖到】怎样实现长按某个图标或图片等控件,拖曳到一个特定的区域。判断它落在那个区域?

Android之实现多桌面图标app入口进入不同的页面,像2个独立运行的app一样,互不干扰。