You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:长按应用外部图标打开菜单及实现长按显示选项

长按图标弹出菜单的实现方案

一、桌面长按应用图标弹出快捷菜单(对应你截图的效果)

这是Android系统自带的App Shortcuts功能,实现步骤如下:

  1. 配置静态快捷项
    在res目录下新建xml文件夹,创建shortcuts.xml文件,填入以下内容(按需修改):
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <shortcut
    android:shortcutId="open_setting"
    android:enabled="true"
    android:icon="@drawable/ic_setting"
    android:shortcutShortLabel="@string/setting_short"
    android:shortcutLongLabel="@string/setting_long"
    android:shortcutDisabledMessage="@string/setting_disabled">
    <intent
      android:action="android.intent.action.VIEW"
      android:targetPackage="com.your.app.package"
      android:targetClass="com.your.app.package.SettingActivity"/>
    <categories android:name="android.shortcut.conversation"/>
  </shortcut>
  <!-- 可以添加更多快捷项 -->
</shortcuts>

然后在AndroidManifest.xml的主Activity(桌面图标对应的Activity)里添加引用:

<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>
  1. 动态添加快捷项(适合需更新的场景)
    如果需要根据用户操作动态添加快捷选项,用代码实现:
val shortcutManager = getSystemService(ShortcutManager::class.java)
// 判断系统是否支持固定快捷项
if (shortcutManager.isRequestPinShortcutSupported) {
  val shortcut = ShortcutInfo.Builder(this, "dynamic_action")
    .setShortLabel("快速新建")
    .setLongLabel("快速创建新内容")
    .setIcon(Icon.createWithResource(this, R.drawable.ic_new))
    .setIntent(Intent(this, NewContentActivity::class.java))
    .build()
  // 请求用户添加到桌面快捷项
  shortcutManager.requestPinShortcut(shortcut, null)
}

二、应用内长按图标弹出菜单

如果是自己应用界面里的图标,长按弹出选项用PopupMenu即可:

  1. 给图标设置长按监听:
val targetIcon = findViewById<ImageView>(R.id.target_icon)
targetIcon.setOnLongClickListener { v ->
  val popup = PopupMenu(this, v)
  // 加载菜单布局
  popup.menuInflater.inflate(R.menu.icon_popup_menu, popup.menu)
  // 设置菜单点击事件
  popup.setOnMenuItemClickListener { item ->
    when(item.itemId) {
      R.id.menu_share -> {
        // 处理分享逻辑
        true
      }
      R.id.menu_delete -> {
        // 处理删除逻辑
        true
      }
      else -> false
    }
  }
  popup.show()
  true
}
  1. 创建菜单布局res/menu/icon_popup_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:id="@+id/menu_share"
    android:title="分享"/>
  <item
    android:id="@+id/menu_delete"
    android:title="删除"/>
</menu>

补充说明

  • App Shortcuts仅支持Android 7.1(API 25)及以上版本;
  • 静态快捷项安装应用后直接生效,动态快捷项需要用户确认才能添加;
  • 自定义PopupMenu可通过样式文件修改外观,适配应用风格。

内容的提问来源于stack exchange,提问作者Nabin Dhakal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:55:19