欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-06-24 12:42:23
Android 桌面图标长按快捷入口(Shortcut、7.1.1、API25+)Android 7.1.1(API 25)以后支持的功能,在桌面长按应用图标,可以设置快捷方式。静态设置res -> xml-v25 下创建 shortcuts 配置文件,例如:shortcuts.xml

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

本文地址:https://blog.csdn.net/q4878802/article/details/110526519