本贴主要搬运自 reddit r/tasker 分类,外加个人实践例子。注意这是测试版插件,请到 reddit 查看是否有更新。
[[Plugin][Beta] TaskerLauncherShortcut : tasker](http://weibo.ws/QHNOOu)
这个插件主要用来解决哪些问题?
从 Android 7.1 开始,在应用支持的情况下用户长按应用图标会弹出应用中特定操作的快捷方式。你可以将这些快捷方式固定在支持的启动器中成为固定的快捷方式 (pinned shortcuts),帮助你快速启动应用中的常见或推荐任务。
不幸的是,这些固定的快捷方式包含一个名为 com.android.launcher3.DEEP_SHORTCUT 的特殊类别 (category),你很难通过 Tasker Shortcut 操作、AutoShortcut、java intents 或 am 命令来启动他们。
之前的解决办法是使用 IntentTask 插件,但需要将其作为默认启动器,考虑到可能的影响,我没有使用这个方法。有兴趣的可以看 @blackspot 在简书上的文章:[Tasker 打开 App Shortcuts [No Root] - 简书](https://www.jianshu.com/p/c0cd63c36c85)
现在你可以使用 TaskerLauncherShortcut 插件来解决这个问题。
如何使用 TaskerLauncherShortcut 插件?
主要通过作者提供的项目来调用插件,从而打开快捷方式。
那么,该项目是怎样运行的呢?
- 用户执行 TaskerLauncherShortcut DEEP_SHORTCUT Template 或 TaskerLauncherShortcut Non DEEP_SHORTCUT Template 模板任务,这将使用 %par1 变量来调用 Send Shortcut Intent With TaskerLauncherShortcut 任务,其中 %par1 变量为指定的快捷方式意图 URI;
- 而 Send Shortcut Intent With TaskerLauncherShortcut 任务进行了许多工作,主要是调用插件打开 %par1 变量 (URI) 标识的快捷方式。如果该快捷方式为 DEEP_SHORTCUT,还会在调用插件前后调用 Get And Set Default Launcher 来设置默认启动器,具体是在调用插件前将默认启动器设置为 TaskerLauncherShortcut 应用,调用后设置回用户指定的启动器(DEEP_SHORTCUTS 要求启动快捷方式的应用程序是默认的启动器应用程序)。
- 实际上,Non DEEP_SHORTCUT 可不通过该项目来打开,甚至也不需要该插件,你使用 Tasker 内置的 Shortcut 操作即可(能打开的快捷方式不多)
综上所述,用户需要做的几件事:指定当前启动器、获取快捷方式意图 URI、在自己的任务中模仿模板任务的方式调用插件。
下面以使用 tasker 打开潮汐 (Tide) 的专注 (Focus) 模式为例。
1. 安装插件并导入项目
- 在帖子底部可以找到插件和项目的下载地址。
2. 创建新任务,复制模板任务中的操作
- 在这里我新建了一个任务,用于打开潮汐的专注模式的快捷方式;
- 进入 TaskerLauncherShortcut 项目,打开 TaskerLauncherShortcut DEEP_SHORTCUT Template 模板任务,复制第 2、3、4 步操作,粘贴到新任务中。
- 你也可以直接修改模板任务,不过建议还是在自己的项目中新建任务。
3. 指定当前启动器
- 编辑项目的 "Send Shortcut Intent With TaskerLauncherShortcut" 任务,在第 4 步操作(变量定义)中修改变量 "%normal_default_launcher_package_and_activity_name variable"。
- 默认情况下,此设置为 nova 启动器。如果你使用其他启动器,则只需直接运行 "Get And Set Default Launcher" 任务,当前启动器的程序包和活动名称将被复制到剪贴板。
- 将剪贴板的内容装贴替换掉“发往”的原内容。
4. 获取 URI 准备工作:临时修改默认启动器
- 方法一:
- 安装好插件后,找到应用 TaskerLauncherShortcut 并打开。
- 点击应用右上角 ⋮ 打开菜单,选择 Change Launcher,选择 TaskerLauncherShortcut(注意现在还不是默认启动器)
- 重复上一步,不过这一次会出现选择 Use TaskerLauncherShortcut as Home,选择 Always。
- 方法二:在系统设置里搜索 home - 选择 Default home app - 选择 TaskerLauncherShortcut
5. 获取快捷方式的意图 URI
- 在应用 TaskerLauncherShortcut 中,点击应用右上角 ⋮ 打开菜单,选择 Search Shortcuts,这时候有三个选择:
- 对于静态 (static) 和动态 (dynamic) 快捷方式,只需单击快捷方式即可复制 URI。
- 对于固定 (pinned) 快捷方式,将要求您转到要为其创建固定快捷方式的应用程序并创建它,然后从最近菜单返回 Shortcut Chooser,URI 将被自动复制到剪贴板。
- 在这个例子中,我选择的是 Static Shortcut,然后是 Tide 的 Focus 快捷方式。(注意,如果你没有修改默认启动器为 TaskerLauncherShortcut,只会出现有限的几种,类似 Tasker Shortcut 操作显示的那样)
6. 粘贴 URI 到自己的任务中
- 回到自己创建的任务中,编辑第 2 步操作(变量定义),将变量 %shortcut_intent_uri 的内容(“发往”)粘贴替换为上一步得到的 URI。
7. 替换回原启动器
- 操作类似第 4 步。
任务描述:
打开 focus 快捷方式 (71)
Default: kiwi browser new incognito tab>
A1: 变量定义 [ 名称:%shortcut_intent_uri 发往:#Intent;action=android.intent.action.MAIN;category=com.android.launcher3.DEEP_SHORTCUT;launchFlags=0x10200000;package=io.moreless.tide;component=io.moreless.tide/io.moreless.tide2.activity.SplashActivity;i.profile=0;S.shortcut_id=focus;end 递归变量:关 无匹配:关 附加:关 Max Rounding Digits:3 ]
A2: 执行任务 [ 名称:Send Shortcut Intent With TaskerLauncherShortcut 优先级:%priority 参数 1 (%par1):%shortcut_intent_uri 参数 2 (%par2): 返回值变量:%result 停止:关 Local Variable Passthrough:关 Limit Passthrough To: ]
A3: Toast提示 [ 文字:%result 长:关 ]
Send Shortcut Intent With TaskerLauncherShortcut (108)
...
A3: 任务锚点
Default: Nova Launcher>
A4: 变量定义 [ 名称:%normal_default_launcher_package_and_activity_name 发往:com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity 递归变量:关 无匹配:关 附加:关 Max Rounding Digits:3 ]
...
来几张图:
下载地址:
项目:[taskernet](http://weibo.ws/MGDcCV)
插件和项目(蓝奏云):http://weibo.ws/isyeos 密码:enon
你也可以到原贴去下载(使用 taskernet 和 GDrive 分享,目前没有上架 Google Play 商店):
[[Plugin][Beta] TaskerLauncherShortcut : tasker](http://weibo.ws/QHNOOu)
[[Plugin][Beta] TaskerLauncherShortcut : tasker](http://weibo.ws/QHNOOu)
这个插件主要用来解决哪些问题?
从 Android 7.1 开始,在应用支持的情况下用户长按应用图标会弹出应用中特定操作的快捷方式。你可以将这些快捷方式固定在支持的启动器中成为固定的快捷方式 (pinned shortcuts),帮助你快速启动应用中的常见或推荐任务。
不幸的是,这些固定的快捷方式包含一个名为 com.android.launcher3.DEEP_SHORTCUT 的特殊类别 (category),你很难通过 Tasker Shortcut 操作、AutoShortcut、java intents 或 am 命令来启动他们。
之前的解决办法是使用 IntentTask 插件,但需要将其作为默认启动器,考虑到可能的影响,我没有使用这个方法。有兴趣的可以看 @blackspot 在简书上的文章:[Tasker 打开 App Shortcuts [No Root] - 简书](https://www.jianshu.com/p/c0cd63c36c85)
现在你可以使用 TaskerLauncherShortcut 插件来解决这个问题。
如何使用 TaskerLauncherShortcut 插件?
主要通过作者提供的项目来调用插件,从而打开快捷方式。
那么,该项目是怎样运行的呢?
- 用户执行 TaskerLauncherShortcut DEEP_SHORTCUT Template 或 TaskerLauncherShortcut Non DEEP_SHORTCUT Template 模板任务,这将使用 %par1 变量来调用 Send Shortcut Intent With TaskerLauncherShortcut 任务,其中 %par1 变量为指定的快捷方式意图 URI;
- 而 Send Shortcut Intent With TaskerLauncherShortcut 任务进行了许多工作,主要是调用插件打开 %par1 变量 (URI) 标识的快捷方式。如果该快捷方式为 DEEP_SHORTCUT,还会在调用插件前后调用 Get And Set Default Launcher 来设置默认启动器,具体是在调用插件前将默认启动器设置为 TaskerLauncherShortcut 应用,调用后设置回用户指定的启动器(DEEP_SHORTCUTS 要求启动快捷方式的应用程序是默认的启动器应用程序)。
- 实际上,Non DEEP_SHORTCUT 可不通过该项目来打开,甚至也不需要该插件,你使用 Tasker 内置的 Shortcut 操作即可(能打开的快捷方式不多)
综上所述,用户需要做的几件事:指定当前启动器、获取快捷方式意图 URI、在自己的任务中模仿模板任务的方式调用插件。
下面以使用 tasker 打开潮汐 (Tide) 的专注 (Focus) 模式为例。
1. 安装插件并导入项目
- 在帖子底部可以找到插件和项目的下载地址。
2. 创建新任务,复制模板任务中的操作
- 在这里我新建了一个任务,用于打开潮汐的专注模式的快捷方式;
- 进入 TaskerLauncherShortcut 项目,打开 TaskerLauncherShortcut DEEP_SHORTCUT Template 模板任务,复制第 2、3、4 步操作,粘贴到新任务中。
- 你也可以直接修改模板任务,不过建议还是在自己的项目中新建任务。
3. 指定当前启动器
- 编辑项目的 "Send Shortcut Intent With TaskerLauncherShortcut" 任务,在第 4 步操作(变量定义)中修改变量 "%normal_default_launcher_package_and_activity_name variable"。
- 默认情况下,此设置为 nova 启动器。如果你使用其他启动器,则只需直接运行 "Get And Set Default Launcher" 任务,当前启动器的程序包和活动名称将被复制到剪贴板。
- 将剪贴板的内容装贴替换掉“发往”的原内容。
4. 获取 URI 准备工作:临时修改默认启动器
- 方法一:
- 安装好插件后,找到应用 TaskerLauncherShortcut 并打开。
- 点击应用右上角 ⋮ 打开菜单,选择 Change Launcher,选择 TaskerLauncherShortcut(注意现在还不是默认启动器)
- 重复上一步,不过这一次会出现选择 Use TaskerLauncherShortcut as Home,选择 Always。
- 方法二:在系统设置里搜索 home - 选择 Default home app - 选择 TaskerLauncherShortcut
5. 获取快捷方式的意图 URI
- 在应用 TaskerLauncherShortcut 中,点击应用右上角 ⋮ 打开菜单,选择 Search Shortcuts,这时候有三个选择:
- 对于静态 (static) 和动态 (dynamic) 快捷方式,只需单击快捷方式即可复制 URI。
- 对于固定 (pinned) 快捷方式,将要求您转到要为其创建固定快捷方式的应用程序并创建它,然后从最近菜单返回 Shortcut Chooser,URI 将被自动复制到剪贴板。
- 在这个例子中,我选择的是 Static Shortcut,然后是 Tide 的 Focus 快捷方式。(注意,如果你没有修改默认启动器为 TaskerLauncherShortcut,只会出现有限的几种,类似 Tasker Shortcut 操作显示的那样)
6. 粘贴 URI 到自己的任务中
- 回到自己创建的任务中,编辑第 2 步操作(变量定义),将变量 %shortcut_intent_uri 的内容(“发往”)粘贴替换为上一步得到的 URI。
7. 替换回原启动器
- 操作类似第 4 步。
任务描述:
打开 focus 快捷方式 (71)
Default: kiwi browser new incognito tab>
A1: 变量定义 [ 名称:%shortcut_intent_uri 发往:#Intent;action=android.intent.action.MAIN;category=com.android.launcher3.DEEP_SHORTCUT;launchFlags=0x10200000;package=io.moreless.tide;component=io.moreless.tide/io.moreless.tide2.activity.SplashActivity;i.profile=0;S.shortcut_id=focus;end 递归变量:关 无匹配:关 附加:关 Max Rounding Digits:3 ]
A2: 执行任务 [ 名称:Send Shortcut Intent With TaskerLauncherShortcut 优先级:%priority 参数 1 (%par1):%shortcut_intent_uri 参数 2 (%par2): 返回值变量:%result 停止:关 Local Variable Passthrough:关 Limit Passthrough To: ]
A3: Toast提示 [ 文字:%result 长:关 ]
Send Shortcut Intent With TaskerLauncherShortcut (108)
...
A3: 任务锚点
Default: Nova Launcher>
A4: 变量定义 [ 名称:%normal_default_launcher_package_and_activity_name 发往:com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity 递归变量:关 无匹配:关 附加:关 Max Rounding Digits:3 ]
...
来几张图:
下载地址:
项目:[taskernet](http://weibo.ws/MGDcCV)
插件和项目(蓝奏云):http://weibo.ws/isyeos 密码:enon
你也可以到原贴去下载(使用 taskernet 和 GDrive 分享,目前没有上架 Google Play 商店):
[[Plugin][Beta] TaskerLauncherShortcut : tasker](http://weibo.ws/QHNOOu)