Android 快捷方式 Shortcuts的动态创建应用

本文介绍了一种在Android系统中动态创建快捷方式的方法。通过使用ShortcutManager API,可以为应用程序生成带有特定图标和标签的快捷方式,并通过传递参数实现不同场景的跳转。此功能适用于Android N_MR1及以上版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 动态创建快捷方式列表,先跳转到主页面做中转,然后在中转界面做相应的跳转处理,主要是获取对应的“.putExtra(“key”, id)”的数据来进行不同的跳转操作。
    public void createShortcut() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            try {
                if (true) {
                    ShortcutManager mShortcutManager = getSystemService(ShortcutManager.class);
                    List<ShortcutInfo> infoList = new ArrayList<>();

                    infoList.add(createShortcutInfo(
                            "id1", 0, icon1, "name1"));
                    infoList.add(createShortcutInfo(
                            "id2", 1, icon2, "name2"));
                  
                    if (mShortcutManager != null)
                        mShortcutManager.setDynamicShortcuts(infoList);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private ShortcutInfo createShortcutInfo(String id, int rank, int icon, String label) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            return new ShortcutInfo.Builder(this, id)
                    .setShortLabel(label)// 快捷方式桌面名称
                    .setLongLabel(label)// APP长按显示的标题
                    .setRank(rank)// 显示顺序
                    .setIcon(Icon.createWithResource(this, icon))// 快捷方式的图标
                    .setIntent(new Intent(Intent.ACTION_MAIN, null, this, MainActivity.class)
                            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)//根据需求来设置Flag
                            .putExtra("key", id))// 传递跳转参数
                    .build();
        }
        return null;
    }
  1. 跳转页处理
private void jump(){
    Intent intent = getIntent();
    String data = intent.getStringExtra("key");
    if(data != null){
        switch (data){
            case "id1":
                Intent intent1 = new Intent(this, test1Activity.class);
                startActivity(intent1);
                break;
            case "id2":
                Intent intent1 = new Intent(this, test2Activity.class);
                startActivity(intent2);
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值