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

如何重排Android文本选择工具栏项(Process_text)并将应用置于首位?

如何将文本选择工具栏中的应用移至首位

文本选择工具栏示例

以下是不同平台的具体解决方案:

Android 平台

  • 利用 ChooserTargetService 自定义分享目标排序:
    1. 继承 ChooserTargetService 并重写 onGetChooserTargets 方法
    2. 在返回的目标列表中,将你的应用条目放在最前端,通过设置更高的优先级数值(范围0-1)确保排序靠前
    3. 在清单文件中注册该服务,并配置对应的 intent-filter
      核心代码示例:
    public class CustomChooserService extends ChooserTargetService {
        @Override
        public List<ChooserTarget> onGetChooserTargets(ComponentName target, IntentFilter filter) {
            List<ChooserTarget> targets = new ArrayList<>();
            // 将自定义目标放在列表首位
            targets.add(new ChooserTarget(
                getString(R.string.app_name),
                Icon.createWithResource(this, R.mipmap.ic_launcher),
                1.0f, // 最高优先级
                new ComponentName(getPackageName(), ShareActivity.class),
                null
            ));
            // 可添加其他应用目标或保留系统默认目标
            return targets;
        }
    }
    
    注意:该方案仅支持 Android 7.0(API 24)及以上版本。

iOS 平台

  • 自定义 UIActivityViewController 的活动排序:
    1. 创建自定义 UIActivity 实现你的应用操作
    2. 初始化 UIActivityViewController 时,将自定义活动放在 applicationActivities 数组的首位,系统会优先展示自定义活动
    3. 可通过 excludedActivityTypes 排除无关系统活动,简化菜单列表
      核心代码示例:
    class CustomShareActivity: UIActivity {
        override var activityType: UIActivity.ActivityType? {
            return UIActivity.ActivityType("com.yourapp.customshare")
        }
        override var activityTitle: String? {
            return "我的应用"
        }
        override func canPerform(withActivityItems activityItems: [Any]) -> Bool {
            return true
        }
        override func perform() {
            // 执行你的分享逻辑
            activityDidFinish(true)
        }
    }
    
    // 使用时
    let customActivity = CustomShareActivity()
    let activityVC = UIActivityViewController(
        activityItems: ["分享内容"],
        applicationActivities: [customActivity]
    )
    activityVC.excludedActivityTypes = [.airDrop, .mail]
    present(activityVC, animated: true)
    

Web 平台(浏览器文本选择菜单)

  • 替换默认菜单为自定义浮动菜单:
    1. 监听文本选择后的右键或默认菜单触发事件,阻止浏览器默认行为
    2. 渲染自定义浮动菜单,将你的应用操作放在首位
      核心代码示例:
    // 监听文本选择事件
    document.addEventListener('selectionchange', () => {
        const selection = window.getSelection().toString();
        if (selection.length > 0) {
            // 可提前准备自定义菜单元素
        } else {
            // 隐藏自定义菜单
        }
    });
    
    // 阻止默认右键菜单(针对文本选择场景)
    document.addEventListener('contextmenu', (e) => {
        if (window.getSelection().toString().length > 0) {
            e.preventDefault();
            // 在鼠标位置展示自定义菜单,第一个选项为你的应用操作
            showCustomMenu(e.pageX, e.pageY);
        }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:21:03