├── CHANGELOG.md ├── FAQs_And_FUQs.md ├── LICENSE.md ├── README.md └── projects ├── TaskerLauncherShortcut.prj.md └── TaskerLauncherShortcut.prj.xml /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | **Version Number Format:** `major.minor.patch` 6 | **Release Date Format:** `yyyy-mm-dd` 7 | 8 | **Types of Changes:** 9 | - **Added** for new features. 10 | - **Changed** for changes in existing functionality. 11 | - **Deprecated** for soon-to-be removed features. 12 | - **Removed** for now removed features. 13 | - **Fixed** for any bug fixes. 14 | - **Security** in case of vulnerabilities. 15 | ## 16 | 17 | 18 | ## [Unreleased] 19 | 20 | `-` 21 | 22 | 23 | ## [1.0.0] - 2020-09-03 24 | 25 | `-` 26 | ## 27 | 28 | 29 | [unreleased]: https://github.com/agnostic-apollo/TaskerLauncherShortcut-Tasker-Project/compare/v1.0.0...HEAD 30 | [1.0.0]: https://github.com/agnostic-apollo/TaskerLauncherShortcut-Tasker-Project/releases/tag/v1.0.0 31 | -------------------------------------------------------------------------------- /FAQs_And_FUQs.md: -------------------------------------------------------------------------------- 1 | ### Frequently Asked Questions(FAQs) 2 | 3 | `-` 4 | ## 5 | 6 | 7 | ### Frequently Unasked Questions(FUQs) 8 | 9 | `-` 10 | ## 11 | 12 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019, agnostic-apollo, auth={ type=`scrypt-kdf`, key=`xY%I5l>AxK+n@o.]cjUp8&s2.NyFBr=&]PoMxQ5B-W(T)e+d(lDT*I7u=jjFK-UA-IA-BA` } 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TaskerLauncherShortcut Tasker Project 2 | 3 | `TaskerLauncherShortcut Tasker Project` is a sample project for the [Tasker App] to run [TaskerLauncherShortcut App] shortcut intents. It requires [Tasker App] to be granted either `root` or `ADB` access for launching shortcuts with the `com.android.launcher3.DEEP_SHORTCUT` category in android `>=7.1`. 4 | ## 5 | 6 | 7 | ### Contents 8 | - [How Project Works](#How-Project-Works) 9 | - [Compatibility](#Compatibility) 10 | - [Dependencies](#Dependencies) 11 | - [Downloads](#Downloads) 12 | - [Install Instructions For Tasker In Android](#Install-Instructions-For-Tasker-In-Android) 13 | - [Usage](#Usage) 14 | - [Current Features](#Current-Features) 15 | - [Planned Features](#Planned-Features) 16 | - [Issues](#Issues) 17 | - [Worthy Of Note](#Worthy-Of-Note) 18 | - [FAQs And FUQs](#FAQs-And-FUQs) 19 | - [Changelog](#Changelog) 20 | - [Contributions](#Contributions) 21 | ## 22 | 23 | 24 | ### How Project Works 25 | 26 | As already mentioned in the [TaskerLauncherShortcut App] info, the shortcuts with the `com.android.launcher3.DEEP_SHORTCUT` category require the app starting the shortcut to be the default launcher app or currently be the active voice interaction service, so the `TaskerLauncherShortcut` must be the default launcher app when the plugin is called. To change the default launcher app without using touch simulation or [AutoInput](https://play.google.com/store/apps/details?id=com.joaomgcd.autoinput&hl=en) and just using background commands requires either `root` or `ADB`. The `cmd package set-home-activity %launcher_package_and_activity_name` command can be used for this. Setting tasker as the device owner (not device administrator) may work but requires more work. The `Send Shortcut Intent With TaskerLauncherShortcut` task is provided that takes cares of everything for the user. It takes an intent `Uri` as input `%par1` and if it's a `DEEP_SHORTCUT`, then it automatically sets the `TaskerLauncherShortcut` app as the default launcher, starts the shortcut and then resets the user's normal launcher app as the default launcher. The default launchers are set by the `Get And Set Default Launcher` task. This is done in the background and does not require any interaction. The plugin action in the `Send Shortcut Intent With TaskerLauncherShortcut` task uses a local variable so that same action can be used dynamically for different intents received as parameters to the task, **do not** edit it. 27 | 28 | For shortcuts without the `com.android.launcher3.DEEP_SHORTCUT` category, changing the default launcher is not required and so neither is `root` or `ADB` and you may use the plugin directly in any task as a standalone action instead of using the `Send Shortcut Intent With TaskerLauncherShortcut` task. A template task `TaskerLauncherShortcut Non DEEP_SHORTCUT Template` is given for this. 29 | 30 | The project and the app has been tested on an Android 7.0 device and Android 8.1 and 10 emulators, but the Android 10 emulator didn't have root and `ADB Wi-Fi` likely can't work, so haven't tested changing the default launcher commands on it, but the intents work. There could still be issues because of android 10 background activity start restrictions but hopefully the `Draw Over Other Apps` permission should fix that. 31 | 32 | Check [TaskerLauncherShortcut Project Info](projects/TaskerLauncherShortcut.prj.md) file for more info of the profiles and tasks. 33 | ## 34 | 35 | 36 | ### Compatibility 37 | 38 | - Android using [Tasker App]. 39 | ## 40 | 41 | 42 | ### Dependencies 43 | 44 | - [TaskerLauncherShortcut App] 45 | - Requires [Tasker App] to be granted either `root` or `ADB` access for launching shortcuts with the `com.android.launcher3.DEEP_SHORTCUT` category in android `>=7.1`. 46 | ## 47 | 48 | 49 | ### Downloads 50 | 51 | - [GitHub releases](https://github.com/agnostic-apollo/TaskerLauncherShortcut-Tasker-Project/releases). 52 | - [Taskernet](https://taskernet.com/shares/?user=AS35m8mXdvaT1Vj8TwkSaCaoMUv220IIGtHe3pG4MymrCUhpgzrat6njEOnDVVulhAIHLi6BPUt1&id=Project%3ATaskerLauncherShortcut) 53 | ## 54 | 55 | 56 | ### Install Instructions For Tasker In Android 57 | 58 | 1. Import `projects/TaskerLauncherShortcut.prj.xml` Project file into Tasker. 59 | 60 | ## 61 | 62 | 63 | ### Usage 64 | 65 | **DEEP_SHORTCUT shortcuts**: 66 | 67 | 1. You need to set the `%normal_default_launcher_package_and_activity_name variable` in the `Send Shortcut Intent With TaskerLauncherShortcut` task. It defines the package and activity name of the normal default launcher that should be reverted back to after the shortcut has been sent. By default this is set to nova launcher. If you use a different launcher, then just run the `Get And Set Default Launcher` task directly from the tasker UI and the package and activity name of your current launcher will be copied to the clipboard. Paste that in the `Variable Set` action of the `%normal_default_launcher_package_and_activity_name` variable in the `Send Shortcut Intent With TaskerLauncherShortcut` task. 68 | 69 | 2. You need to find the shortcut intent `Uri` that needs to be passed to the `Send Shortcut Intent With TaskerLauncherShortcut` task as `%par1`. Open the `TaskerLauncherShortcut` app, and from its options, click `Search Shortcuts`. You will be asked to set the app as the default launcher. Make sure to select `Always` or `Use as default app` instead of `Just Once`, depending on android version. Press `Home` button to make sure its set as the default and that no prompt is shown. Some devices make require going into android settings to set the default launcher. Once its set, then return to the `Shortcut Chooser` activity. For static and dynamic shortcuts, just clicking on the shortcut will copy the intent `Uri`. For static shortcuts, you may be taken to a configuration screen. For pinned shortcuts, you will be asked to go to the app for which you want to create a pinned shortcut for and create it and then return. Once you go to the app like chrome and click something like `Add to Home screen` and return to Shortcut Chooser activity from recents menu, the shortcut intent `Uri` will be copied to the clipboard. Use that intent `Uri` in a tasker task and send it as `%par1` to the `Send Shortcut Intent With TaskerLauncherShortcut` task with a `Perform Task` action to start the shortcut. A template task `TaskerLauncherShortcut DEEP_SHORTCUT Template` is given for this. 70 | 71 | **Non DEEP_SHORTCUT shortcuts**: 72 | 73 | 1. Open the `TaskerLauncherShortcut Non DEEP_SHORTCUT Template` task. Select the `TaskerLauncherShortcut` action and search and select the desired shortcut by pressing the search icon in the plugin configuration activity. Then run the task. Make sure the intent `Uri` for the selected intent does not have the `com.android.launcher3.DEEP_SHORTCUT` category, otherwise shortcut will not work unless the TaskerLauncherShortcut app is the default launcher. 74 | ## 75 | 76 | 77 | ### Current Features 78 | 79 | - Tasks to start `DEEP_SHORTCUT` and `Non DEEP_SHORTCUT` shortcuts 80 | - Tasks to change default launcher using `root` or `ADB` 81 | ## 82 | 83 | 84 | ### Planned Features 85 | 86 | - Change default launcher using Device owner APIs. 87 | ## 88 | 89 | 90 | ### Issues 91 | 92 | `-` 93 | ## 94 | 95 | 96 | ### Worthy Of Note 97 | 98 | `-` 99 | ## 100 | 101 | 102 | ### FAQs And FUQs 103 | 104 | Check [FAQs_And_FUQs.md](FAQs_And_FUQs.md) file for the **Frequently Asked Questions(FAQs)** and **Frequently Unasked Questions(FUQs)**. 105 | ## 106 | 107 | 108 | ### Changelog 109 | 110 | Check [CHANGELOG.md](CHANGELOG.md) file for the **Changelog**. 111 | ## 112 | 113 | 114 | ### Contributions 115 | 116 | `-` 117 | ## 118 | 119 | 120 | [Tasker App]: https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm 121 | [TaskerLauncherShortcut App]: https://github.com/agnostic-apollo/TaskerLauncherShortcut 122 | -------------------------------------------------------------------------------- /projects/TaskerLauncherShortcut.prj.md: -------------------------------------------------------------------------------- 1 | # TaskerLauncherShortcut 2 | 3 | ## Export Info: 4 | **Tasker Version:** `5.9.3.beta.5` 5 | **Timestamp:** `2020-05-16 21.58.26` 6 | **sha256sum:** `7c8a6f69c201538834f5df941f237222854c72aade8ee01de0578f62804b3045` 7 | 8 | 9 | 10 | ## Profile Names: 11 | **Count:** `0` 12 | 13 | 14 | 15 | 16 | ## Scene Names: 17 | **Count:** `0` 18 | 19 | 20 | 21 | 22 | ## Task Names: 23 | **Count:** `5` 24 | 25 | - *`Get Intent Info From Intent Uri`* 26 | - *`Get And Set Default Launcher`* 27 | - *`TaskerLauncherShortcut Non DEEP_SHORTCUT Template`* 28 | - *`Send Shortcut Intent With TaskerLauncherShortcut`* 29 | - *`TaskerLauncherShortcut DEEP_SHORTCUT Template`* 30 | 31 | 32 | 33 | ## Profiles Info: 34 | 35 | 36 | 37 | ## Tasks Info: 38 | 39 | **#:** `1` 40 | **Name:** `Get Intent Info From Intent Uri` 41 | **ID:** `901` 42 | **Collision Handling:** `Run Both Together` 43 | **Keep Device Awake:** `false` 44 | **Help:** 45 | ```` 46 | A task that converts an intent Uri back to an intent and gets all its info. The task also dynamically generates an "am start" command for the intent so that it may be run with a shell, like with the "Run Shell" action. 47 | 48 | Intents for shortcuts are normally stored as Uri strings by launcher apps by running the "Intent.toUri()" function on the intent passed by the apps to them when the shortcut is first created. This Uri can be converted back to an intent by running the "Intent.getIntent(String)" function on the Uri string. For example in nova launcher, the shortcut intent Uris are stored in "/data/data/com.teslacoilsw.launcher/databases/launcher.db" -> "favorites" table. It would require root to access such data. 49 | 50 | The implementation of "Intent.toUri()" is found at the following link: 51 | https://github.com/aosp-mirror/platform_frameworks_base/blob/nougat-release/core/java/android/content/Intent.java#L8433 52 | 53 | The implementation of "Intent.getIntent(String)" is found at the following link: 54 | https://github.com/aosp-mirror/platform_frameworks_base/blob/nougat-release/core/java/android/content/Intent.java#L4982 55 | 56 | The intent can normally be run by the "Shortcut" action by passing it the intent Uri. 57 | 58 | The intent can also be run by running "CONTEXT.startActivity(Intent)" on the intent object returned by the "Intent.getIntent(String)" function. You may optionally override the flags and other data of the intent depending on your needs. There are 3 disabled actions after the "Convert Intent Uri To Intent Object" anchor that shows how to do it. 59 | 60 | However, in some cases a user would like to understand how exactly an intent works so he may modify it for other use cases or maybe he wants to run the same intent with an am command using a shell instead of using java. This task was mainly created for that purpose. This task extracts info from an intent object created from an intent uri which may include its action, type, scheme, package, component, flags, category and extras. The extra keys in the intent uri begin with a prefix which define the type of the extra. "S." -> String, "B." -> Boolean, "b." -> Byte, "c." -> Char, "d." -> Double, "f." -> Float, "i." -> Integer, "l." -> Long, "s." -> Short. Other types are not supported, like Uri and lists. Intent sourceBounds and selector are not extracted by this task since there are not needed for background commands. Using this info an am command is dynamically generated for the user so that the it can be run using a shell, like with the "Run Shell" action. 61 | 62 | With the intent info, the user can technically do at least 2 things. Either use the "Send Intent" action or use the am command to send the intent. Both have their drawbacks and benefits. 63 | 64 | The "Send Intent" action only allows a maximum of 3 extras, but according to tasker docs, those extras can be type casted to more types than the am command supports, mainly the type double, char, byte and short which the am command does not support. However, flags or multiple categories can't be sent with the "Send Intent" action. 65 | 66 | The am command supports extras of type string, bool, int, long and float. It also support multiple extras and categories. 67 | 68 | So depending on the use case of the user, he can use either since neither is "one to rule them all". Using java actions would be. 69 | 70 | For more info on intents, check the following links: 71 | 72 | https://developer.android.com/reference/android/content/Intent 73 | 74 | https://tasker.joaoapps.com/userguide/en/intents.html 75 | 76 | 77 | To use this task, set the required variables in the "Set User Modifiable Variables*" section of this task. 78 | 79 | The intent_uri variable should be set to the intent Uri whose info needs to be extracted, like a shortcut intent. It can optionally be passed as %par1 which will override the variable set action. Default value is reddit app shortcut. 80 | 81 | The copy_intent_info_to_clipboard is a toggle that decides if the intent info should be copied to the clipboard. Default value is "1". 82 | 83 | The run_am_start_command is a toggle that decides whether the "am start" command that is dynamically generated should be run at the end of this task. Default value is "1". 84 | 85 | The override_am_command_flags_value is a toggle that decides whether the flag stored in the intent should be overridden by the value "335544320" when the "am start" command is generated. The flag value "335544320 (0x14000000)" is basically an OR of "FLAG_ACTIVITY_NEW_TASK 268435456 (0x10000000)" and "FLAG_ACTIVITY_CLEAR_TOP 67108864 (0x04000000)". It is needed to create another activity stack when the new activity is started, like when you want to start a new app. The tasker `Shortcut` action also sends the same flags and ignores the one in the intent uri, at least in my minimal testing. Default value is "1". 86 | 87 | The am command generated may not work for all cases. If an extra is null or of a type not supported by the am command, then a warning is flashed and intent will not be sent. Any parameters that need to be passed to the am command that contain a single quote are automatically escaped. 88 | 89 | 90 | Input %par1: #optional 91 | " 92 | intent_uri 93 | " 94 | 95 | Returns: 96 | " 97 | intent_info 98 | " 99 | 100 | If task is successful, then intent_info will contain the intent info and am command. 101 | Otherwise it will not be set. 102 | ```` 103 | ## 104 | 105 | 106 | **#:** `2` 107 | **Name:** `Get And Set Default Launcher` 108 | **ID:** `874` 109 | **Collision Handling:** `Run Both Together` 110 | **Keep Device Awake:** `false` 111 | **Help:** 112 | ``` 113 | A helper task that gets or sets the default android launcher app with commands. It requires either root or adb. If you don't have either of those, then it is not possible to set the default launcher with background commands, other than tasker being set the device owner (not device admin) but that way has some issues that need to be sorted out. The mode is automatically chosen depending on whatever is available in the order "root, adb". If none of them is detected, then the task exits with failure. 114 | 115 | The action passed to this task as %par1 must be set to either "get" or "set". If no parameter is passed, then "get" is automatically assumed. 116 | 117 | The "get" action can be used to get the normal_default_launcher_package_and_activity_name for the "Send Shortcut Intent With TaskerLauncherShortcut" task. If this task is run directly without any parameters, then it automatically copies the current default launcher to the clipboard. 118 | 119 | 120 | Input %par1: #optional 121 | " 122 | action 123 | " 124 | 125 | Returns: 126 | " 127 | launcher_package_and_activity_name/result_code #depending on action 128 | " 129 | 130 | If action is "get" and task is successful, then launcher_package_and_activity_name will contain the default launcher package and activity name. 131 | Otherwise result will not be set. 132 | 133 | If action is "set" and task is successful, then result_code will contain the "0". 134 | Otherwise it will contain "1". 135 | 136 | For other cases, result will not be set. 137 | ``` 138 | ## 139 | 140 | 141 | **#:** `3` 142 | **Name:** `TaskerLauncherShortcut Non DEEP_SHORTCUT Template` 143 | **ID:** `958` 144 | **Collision Handling:** `Abort New Task` 145 | **Keep Device Awake:** `false` 146 | **Help:** 147 | ``` 148 | A template task to send a Non DEEP_SHORTCUT shortcut intent Uri with TaskerLauncherShortcut plugin. The default value will only work for android less than 7.1 (API 25). 149 | 150 | 151 | This task does not take any parameters or return anything. 152 | ``` 153 | ## 154 | 155 | 156 | **#:** `4` 157 | **Name:** `Send Shortcut Intent With TaskerLauncherShortcut` 158 | **ID:** `925` 159 | **Collision Handling:** `Run Both Together` 160 | **Keep Device Awake:** `false` 161 | **Help:** 162 | ``` 163 | A task that starts a launcher shortcut using the TaskerLauncherShortcut plugin. 164 | 165 | In Android 7.1(API 25) new [ShortcutManager](https://developer.android.com/reference/android/content/pm/ShortcutManager) APIs were added for apps to create shortcuts and [LauncherApps](https://developer.android.com/reference/android/content/pm/LauncherApps) APIs for launcher apps to access shortcuts. 166 | 167 | There are mainly 3 types of shortcuts, static, dynamic and pinned. Static remain the same and are mainly declared in the android manifest of the app. Dynamic shortcuts are published by apps at runtime to ShortcutManager and displayed by launchers like nova launcher by long pressing the app icon. Pinned icons are shortcuts sent by apps to the launcher when you press buttons like "Add to Home screen", like pinning a website or chat shortcut on the launcher home. The static and pinned shortcuts also existed before android 7.1 but used different ways to publish or create shortcuts and they could be started by any app by sending intents through java or am commands. However, the dynamic and pinned shortcuts and some static shortcuts for android 7.1 and higher can only be started by the default launcher apps or currently active voice interaction service. The permission can be checked by an app using [hasShortcutHostPermission](https://developer.android.com/reference/android/content/pm/LauncherApps#hasShortcutHostPermission()). If the app doesn't have the permission, the shortcut intent's desired action will not be successful, even though the target app may open. These shortcuts contain a special category called "com.android.launcher3.DEEP_SHORTCUT" and also have an string extra called "shortcut_id" which defines the id with which the shortcut is registered under the ShortcutManager. Moreover, dynamic shortcuts published by apps can't even be queried by apps and nor can pinned shortcuts be received by apps that don't have the required permission. Another point is that these shortcuts can't be used in android less than 7.1 since ShortcutManager doesn't exist, since the real intent and it's extras are stored by the ShortcutManager when dynamic shortcuts are published by the apps and launcher apps don't have access to them, they only receive a shortcut_id from which the shortcut could be started using the LauncherApps startShortcut() API. Another thing is that there is a way for static shortcuts that only show in android 7.1 and higher to be shown in older devices as well, since nova launcher does it, but this has to yet to be investigated and the TaskerLauncherShortcut plugin doesn't support it currently. 168 | 169 | For these reasons the Tasker "Shortcut" action, AutoShortcut, java intents or am command is not going to work in android 7.1 and higher for DEEP_SHORTCUTS. What can be done is either ask your default launcher dev to add support for a tasker plugin or intent that may be used to start intents stored in the launcher or use the TaskerLauncherShortcut app plugin which takes a shortcut intent Uri as input and starts the shortcut. The TaskerLauncherShortcut is a launcher app and created mainly for starting shortcuts and has a plugin that can be used with tasker. It should ideally support all android versions greater than or equal to 4.1 (API 16). It's a very basic launcher and the homescreen only shows a list of installed apps that can be started on click and does not support adding shortcuts to homescreen. It's options menu supports changing the default launcher by showing the android's "Choose Default Home" screen and also supports searching for static, dynamic and pinned shortcuts depending on android version, the selected shortcut's intent Uri is only copied to the clipboard for other uses like using it in the plugin inside Tasker. The pinned shortcut are of course only received by the launcher app when an app sends them and can't be searched. Previously pinned shortcuts can technically be shown but are not. 170 | 171 | Now as already mentioned that DEEP_SHORTCUTS requires the app starting the shortcut to be the default launcher app, so the TaskerLauncherShortcut must be the default launcher app when the plugin is called. To change the default launcher app without using touch simulation or Autoinput and just using background commands requires either root or adb. The "cmd package set-home-activity %launcher_package_and_activity_name" command can be used for this. Setting tasker as the device owner (not device administrator) may work but requires more work. The "Send Shortcut Intent With TaskerLauncherShortcut" task is provided by the "TaskerLauncherShortcut" tasker project that takes cares of everything for the user. It takes an intent Uri as input %par1 and if it's a DEEP_SHORTCUT, then it automatically sets the "TaskerLauncherShortcut" app as the default launcher, starts the shortcut and then resets the user's normal launcher app as the default launcher. The default launchers are set by the "Get And Set Default Launcher" task. This is done in the background and does not require any interaction. Changing the default launcher for shortcuts that are not DEEP_SHORTCUT is not required and so neither is root or adb and you may use the plugin directly in any task as a standalone action instead of using the "Send Shortcut Intent With TaskerLauncherShortcut" task. The plugin also has an internal "Search Shortcuts" button when you open the plugin configuration while editing the plugin action that automatically sets the plugin input field with the intent Uri. The plugin action in the "Send Shortcut Intent With TaskerLauncherShortcut" task uses a local variable so that same action can be used dynamically for different intents received as parameters to the task, do not edit it. A template task "TaskerLauncherShortcut Non DEEP_SHORTCUT Template" is given for this. 172 | 173 | To use DEEP_SHORTCUT shortcuts, you must do two things: 174 | 175 | 1. You need to set the "%normal_default_launcher_package_and_activity_name variable" in the "Send Shortcut Intent With TaskerLauncherShortcut" task. It defines the package and activity name of the normal default launcher that should be reverted back to after the shortcut has been sent. By default this is set to nova launcher. If you use a different launcher, then just run the "Get And Set Default Launcher" task directly from the tasker UI and the package and activity name of your current launcher will be copied to the clipboard. Paste that in the "Variable Set" action of the "%normal_default_launcher_package_and_activity_name" variable in the "Send Shortcut Intent With TaskerLauncherShortcut" task. 176 | 177 | 2. You need a find the shortcut intent Uri that needs to be passed to the "Send Shortcut Intent With TaskerLauncherShortcut" task as %par1. Open the "TaskerLauncherShortcut" app, and from its options, click "Search Shortcuts". You will be asked to set the app as the default launcher. Make sure to select "Always" or "Use as default app" instead of "Just Once", depending on android version. Press Home button to make sure its set as the default and that no prompt is shown. Once its set, then return to the Shortcut Chooser activity. For static and dynamic shortcuts, just clicking on the shortcut will copy the Uri. For static shortcuts, you may be taken to a configuration screen. For pinned shortcuts, you will be asked to go to the app for which you want to create a pinned shortcut for and create it and then return. Once you go to the app like chrome and click something like "Add to Home screen" and return to Shortcut Chooser activity from recents menu, the shortcut intent Uri will be copied to the clipboard. Use that intent Uri in a tasker task and send it as %par1 to the "Send Shortcut Intent With TaskerLauncherShortcut" task with a "Perform Task" action to start the shortcut. A template task "TaskerLauncherShortcut DEEP_SHORTCUT Template" is given for this. 178 | 179 | 180 | The shortcut_intent_uri passed to this task as %par1 must be set to a valid intent Uri. 181 | 182 | The %normal_default_launcher_package_and_activity_name must be set in the format "package_name/activity_name" 183 | 184 | 185 | Input %par1: #optional 186 | " 187 | shortcut_intent_uri 188 | " 189 | 190 | Returns: 191 | " 192 | result_code 193 | taskerlaunchershortcut_errmsg #optional 194 | " 195 | 196 | If task is successful, then result_code will contain 0. 197 | Otherwise it will contain appropriate exit code. 198 | 199 | taskerlaunchershortcut_errmsg will contain %errmsg if the plugin action failed. 200 | ``` 201 | ## 202 | 203 | 204 | **#:** `5` 205 | **Name:** `TaskerLauncherShortcut DEEP_SHORTCUT Template` 206 | **ID:** `955` 207 | **Collision Handling:** `Abort New Task` 208 | **Keep Device Awake:** `false` 209 | **Help:** 210 | ``` 211 | A template task that runs the "Send Shortcut Intent With TaskerLauncherShortcut" task to send a DEEP_SHORTCUT shortcut intent Uri with TaskerLauncherShortcut plugin. The default value will only work for android greater than 7.1 (API 25). Kiwi Browser must also be installed for default value to work. 212 | 213 | 214 | This task does not take any parameters or return anything. 215 | ``` 216 | ## 217 | 218 | -------------------------------------------------------------------------------- /projects/TaskerLauncherShortcut.prj.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1589558550116 4 | TaskerLauncherShortcut 5 | 901,874,958,925,955 6 | 7 | A project to start launcher shortcuts using the TaskerLauncherShortcut plugin. 8 |

false

9 | 10 |
11 |
12 | 13 | 1588617967656 14 | 1589585388295 15 | 874 16 | Get And Set Default Launcher 17 | 100 18 | 2 19 | 20 | 300 21 | 45 | 46 | 47 | 547 48 | %task_name 49 | Get And Set Default Launcher 50 | 51 | 52 | 53 | 54 | 55 | 56 | 37 57 | 58 | 59 | 60 | %has_root 61 | 0 62 | true 63 | 64 | 65 | 66 | 67 | 123 68 | false 69 | cmd shortcut get-default-launcher 70 | 71 | 72 | %launcher_package_and_activity_name 73 | %errors 74 | 75 | 76 | 77 | 547 78 | %errors 79 | output = 80 | " 81 | %launcher_package_and_activity_name 82 | " 83 | 84 | errors = 85 | " 86 | %errors 87 | " 88 | 89 | exit_code = "%err" 90 | 91 | 92 | 93 | 94 | 95 | Or 96 | 97 | %err 98 | 12 99 | 100 | 101 | 102 | %errors 103 | 12 104 | 105 | 106 | 107 | 108 | 109 | 43 110 | 111 | 112 | 113 | %has_adb_wifi 114 | 0 115 | true 116 | 117 | 118 | 119 | 120 | 375 121 | false 122 | 123 | 124 | <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%aw_output 125 | Output 126 | Output resulting from the command. May be empty.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0></StringArray> 127 | [Ljava.lang.String; 128 | 129 | 130 | cmd shortcut get-default-launcher 131 | 132 | 133 | 134 | 135 | 136 | 137 | 547 138 | %errors 139 | output = 140 | " 141 | %aw_output 142 | " 143 | 144 | errors = 145 | " 146 | %errmsg 147 | " 148 | 149 | exit_code = "%err" 150 | 151 | 152 | 153 | 154 | 155 | Or 156 | 157 | %err 158 | 12 159 | 160 | 161 | 162 | %errmsg 163 | 12 164 | 165 | 166 | 167 | 168 | 169 | 547 170 | %launcher_package_and_activity_name 171 | %aw_output 172 | 173 | 174 | 175 | 176 | 177 | 178 | 43 179 | 180 | 181 | 548 182 | "%task_name" task requires root or adb access 183 | 184 | 185 | 186 | 137 187 | 188 | 189 | 190 | 191 | 192 | 547 193 | %action 194 | %par1 195 | 196 | 197 | 198 | 199 | 200 | 201 | 38 202 | 203 | 204 | 37 205 | 206 | 207 | %errors 208 | 12 209 | \%err 210 | \%errmsg 211 | 212 | 213 | 214 | 215 | 548 216 | Failed To Get Current Default Launcher With cmd Command 217 | 218 | %errors 219 | 220 | 221 | 222 | 137 223 | 224 | 225 | 226 | 227 | 228 | 38 229 | 230 | 231 | 598 232 | %launcher_package_and_activity_name 233 | (?s).*ComponentInfo\{(.*)\}.* 234 | 235 | 236 | 237 | 238 | 239 | $1 240 | 241 | 242 | %launcher_package_and_activity_name 243 | 12 244 | 245 | 246 | 247 | 248 | 249 | 37 250 | 251 | 252 | %par1 253 | 0 254 | \%par1 255 | 256 | 257 | 258 | 259 | 548 260 | "%launcher_package_and_activity_name" 261 | 262 | %errors 263 | 264 | 265 | 266 | 105 267 | %launcher_package_and_activity_name 268 | 269 | 270 | 271 | 38 272 | 273 | 274 | 547 275 | %action 276 | get 277 | 278 | 279 | 280 | 281 | 282 | 283 | %par1 284 | 0 285 | \%par1 286 | 287 | 288 | 289 | 290 | 126 291 | %launcher_package_and_activity_name 292 | 293 | 294 | 295 | 296 | 297 | 298 | 43 299 | 300 | 301 | 302 | %action 303 | 0 304 | set 305 | 306 | 307 | 308 | 309 | 547 310 | %valid_android_package_and_activity_name_regex 311 | ^((?:[A-Za-z]{1}[A-Za-z\d_]*\.)+[A-Za-z][A-Za-z\d_]*)/((?:\.)?\p{javaJavaIdentifierStart}\p{javaJavaIdentifierPart}*(?:\.\p{javaJavaIdentifierStart}\p{javaJavaIdentifierPart}*)*)$ 312 | 313 | 314 | 315 | 316 | 317 | 318 | 37 319 | 320 | 321 | %launcher_package_and_activity_name 322 | 5 323 | %valid_android_package_and_activity_name_regex 324 | 325 | 326 | 327 | 328 | 548 329 | Invalid launcher_package_and_activity_name = "%launcher_package_and_activity_name" 330 | %task_name Failed 331 | 332 | 333 | 334 | 126 335 | 1 336 | 337 | 338 | 339 | 340 | 341 | 342 | 38 343 | 344 | 345 | 300 346 | 347 | 348 | 349 | 549 350 | %errors 351 | 352 | 353 | 354 | 355 | 356 | 598 357 | 358 | %launcher_package_and_activity_name 359 | ' 360 | 361 | 362 | 363 | 364 | 365 | '\\'' 366 | 367 | 368 | %launcher_package_and_activity_name 369 | 12 370 | 371 | 372 | 373 | 374 | 375 | 547 376 | %launcher_package_and_activity_name 377 | %par2 378 | 379 | 380 | 381 | 382 | 383 | 384 | 37 385 | 386 | 387 | 388 | %has_root 389 | 0 390 | true 391 | 392 | 393 | 394 | 395 | 123 396 | false 397 | cmd package set-home-activity '%launcher_package_and_activity_name' 398 | 399 | 400 | %output 401 | %errors 402 | 403 | 404 | 405 | 547 406 | %errors 407 | output = 408 | " 409 | %output 410 | " 411 | 412 | errors = 413 | " 414 | %errors 415 | " 416 | 417 | exit_code = "%err" 418 | 419 | 420 | 421 | 422 | 423 | Or 424 | 425 | %err 426 | 12 427 | 428 | 429 | 430 | %errors 431 | 12 432 | 433 | 434 | 435 | 436 | 437 | 43 438 | 439 | 440 | 441 | %has_adb_wifi 442 | 0 443 | true 444 | 445 | 446 | 447 | 448 | 375 449 | false 450 | 451 | 452 | <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%aw_output 453 | Output 454 | Output resulting from the command. May be empty.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0></StringArray> 455 | [Ljava.lang.String; 456 | 457 | 458 | cmd package set-home-activity '%launcher_package_and_activity_name' 459 | 460 | 461 | 462 | 463 | 464 | 465 | 547 466 | %errors 467 | output = 468 | " 469 | %aw_output 470 | " 471 | 472 | errors = 473 | " 474 | %errmsg 475 | " 476 | 477 | exit_code = "%err" 478 | 479 | 480 | 481 | 482 | 483 | Or 484 | 485 | %err 486 | 12 487 | 488 | 489 | 490 | %errmsg 491 | 12 492 | 493 | 494 | 495 | 496 | 497 | 43 498 | 499 | 500 | 548 501 | "%task_name" task requires root or adb access 502 | 503 | 504 | 505 | 126 506 | 1 507 | 508 | 509 | 510 | 511 | 512 | 513 | 38 514 | 515 | 516 | 365 517 | 518 | 519 | <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%has_root 520 | Root Access 521 | </_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0></StringArray> 522 | [Ljava.lang.String; 523 | 524 | 525 | CheckRoot() 526 | 527 | 528 | 37 529 | 530 | 531 | %errors 532 | 12 533 | \%err 534 | \%errmsg 535 | 536 | 537 | 538 | 539 | 548 540 | Failed To Set Current Default Launcher To "%launcher_package_and_activity_name" With cmd Command 541 | 542 | output = 543 | " 544 | %output 545 | " 546 | 547 | %errors 548 | 549 | 550 | 551 | 126 552 | 1 553 | 554 | 555 | 556 | 557 | 558 | 559 | 43 560 | 561 | 562 | 126 563 | 0 564 | 565 | 566 | 567 | 568 | 569 | 570 | 38 571 | 572 | 573 | 43 574 | 575 | 576 | 548 577 | Invalid action "%action" passed to "%task_name" task 578 | 579 | 580 | 581 | 137 582 | 583 | 584 | 585 | 586 | 587 | 38 588 | 589 | 590 | 365 591 | 592 | 593 | <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%has_adb_wifi 594 | ADB Wifi Access 595 | </_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0></StringArray> 596 | [Ljava.lang.String; 597 | 598 | 599 | CheckADBWifi() 600 | 601 | 602 | 37 603 | 604 | 605 | 606 | %action 607 | 0 608 | get 609 | 610 | 611 | 612 | 613 | 300 614 | 615 | 616 | 617 | 549 618 | %errors 619 | 620 | 621 | 622 | 623 | 624 | 625 | 1588401264372 626 | 1589648176765 627 | 901 628 | Get Intent Info From Intent Uri 629 | 100 630 | 2 631 | 632 | A task that converts an intent Uri back to an intent and gets all its info. The task also dynamically generates an "am start" command for the intent so that it may be run with a shell, like with the "Run Shell" action. 633 |

false

634 | 635 |
636 | 637 | 300 638 | 694 | 695 | 696 | 547 697 | %task_name 698 | Get Intent Info From Intent Uri 699 | 700 | 701 | 702 | 703 | 704 | 705 | 37 706 | 707 | 708 | 709 | %par1 710 | 1 711 | \%par1 712 | 713 | 714 | 715 | 716 | 547 717 | 718 | %am_start_command 719 | -c '%intent_category_escaped' 720 | 721 | 722 | 723 | 724 | 725 | 726 | 135 727 | 728 | 729 | Check if intent_categories_set_iterator has next 730 | 731 | 732 | 38 733 | 734 | 735 | 598 736 | %intent_info 737 | ,$ 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 300 747 | 748 | 749 | 750 | 300 751 | 752 | 753 | 754 | 664 755 | intent_extras 756 | intent 757 | getExtras 758 | {Bundle} () 759 | %intent_action_pick_activity 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 664 769 | false 770 | (Set<String>) intent_extras_set 771 | intent_extras 772 | keySet 773 | {Set} () 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 664 784 | false 785 | 786 | Objects 787 | requireNonNull 788 | {Object} (Object) 789 | intent_extras_set 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 37 799 | 800 | 801 | 802 | %err 803 | 0 804 | \%err 805 | 806 | 807 | 808 | 809 | 547 810 | 811 | %intent_uri 812 | %par1 813 | 814 | 815 | 816 | 817 | 818 | 819 | 547 820 | %is_object_null 821 | false 822 | 823 | 824 | 825 | 826 | 827 | 828 | 43 829 | 830 | 831 | 832 | 547 833 | %is_object_null 834 | true 835 | 836 | 837 | 838 | 839 | 840 | 841 | 38 842 | 843 | 844 | 664 845 | %intent_extras_set_size 846 | intent_extras_set 847 | size 848 | {int} () 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | %is_object_null 859 | 0 860 | false 861 | 862 | 863 | 864 | 865 | 37 866 | 867 | Or 868 | 869 | %intent_extras_set_size 870 | 0 871 | 0 872 | 873 | 874 | %is_object_null 875 | 0 876 | true 877 | 878 | 879 | 880 | 881 | 135 882 | 883 | 884 | Get Intent Extras End 885 | 886 | 887 | 38 888 | 889 | 890 | 547 891 | %intent_info 892 | 893 | 894 | extras: 895 | 896 | 897 | 898 | 899 | 900 | 901 | 664 902 | (Iterator<String>) intent_extras_set_iterator 903 | intent_extras_set 904 | iterator 905 | {Iterator} () 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 38 916 | 917 | 918 | 664 919 | 920 | %intent_extras_set_iterator_has_next 921 | intent_extras_set_iterator 922 | hasNext 923 | {boolean} () 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 37 934 | 935 | 936 | %intent_extras_set_iterator_has_next 937 | 0 938 | true 939 | 940 | 941 | 942 | 943 | 664 944 | %intent_extra_key 945 | intent_extras_set_iterator 946 | next 947 | {Object} () 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 664 958 | false 959 | intent_extra_value 960 | intent_extras 961 | get 962 | {Object} (String) 963 | %intent_extra_key 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 664 973 | %intent_extra_class 974 | intent_extra_value 975 | getClass 976 | {Class} () 977 | %intent_extra_key 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 664 987 | false 988 | 989 | Objects 990 | requireNonNull 991 | {Object} (Object) 992 | intent_extras_set 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 37 1002 | 1003 | 1004 | 1005 | %err 1006 | 1 1007 | \%err 1008 | 1009 | 1010 | 1011 | 1012 | 548 1013 | Warning! Intent Extra Value Is Null For Extra Key, Skipping Extra. 1014 | 1015 | intent_extra_key = "%intent_extra_key" 1016 | 1017 | intent_extra_class = "%intent_extra_class" 1018 | 1019 | 1020 | 1021 | 547 1022 | %am_start_command_incomplete 1023 | 1 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 135 1031 | 1032 | 1033 | Check if intent_extras_set_iterator has next 1034 | 1035 | 1036 | 300 1037 | 1038 | 1039 | 1040 | 38 1041 | 1042 | 1043 | 664 1044 | %intent_extra_value 1045 | intent_extra_value 1046 | toString 1047 | {String} () 1048 | intent_extra_value 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 547 1058 | %intent_info 1059 | 1060 | '%intent_extra_key' (%intent_extra_class): '%intent_extra_value' 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 547 1068 | %intent_extra_key_escaped 1069 | %intent_extra_key 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 598 1077 | 1078 | %intent_extra_key_escaped 1079 | ' 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | '\\'' 1086 | 1087 | 1088 | %intent_extra_key_escaped 1089 | 12 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 547 1096 | %intent_extra_value_escaped 1097 | %intent_extra_value 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 598 1105 | 1106 | %intent_extra_value_escaped 1107 | ' 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | '\\'' 1114 | 1115 | 1116 | %intent_extra_value_escaped 1117 | 12 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 37 1124 | 1125 | 1126 | 1127 | %intent_extra_class 1128 | 2 1129 | *String 1130 | 1131 | 1132 | 1133 | 1134 | 547 1135 | 1136 | %am_start_command 1137 | --es '%intent_extra_key_escaped' '%intent_extra_value_escaped' 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 43 1145 | 1146 | 1147 | 1148 | %intent_extra_class 1149 | 2 1150 | *Boolean 1151 | 1152 | 1153 | 1154 | 1155 | 664 1156 | false 1157 | intent 1158 | Intent 1159 | getIntent 1160 | {Intent} (String) 1161 | %intent_uri 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 547 1171 | 1172 | %am_start_command 1173 | --ez '%intent_extra_key_escaped' '%intent_extra_value_escaped' 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 43 1181 | 1182 | 1183 | 1184 | %intent_extra_class 1185 | 2 1186 | *Float 1187 | 1188 | 1189 | 1190 | 1191 | 547 1192 | 1193 | %am_start_command 1194 | --ef '%intent_extra_key_escaped' '%intent_extra_value_escaped' 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 43 1202 | 1203 | 1204 | 1205 | %intent_extra_class 1206 | 2 1207 | *Integer 1208 | 1209 | 1210 | 1211 | 1212 | 547 1213 | 1214 | %am_start_command 1215 | --ei '%intent_extra_key_escaped' '%intent_extra_value_escaped' 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 43 1223 | 1224 | 1225 | 1226 | %intent_extra_class 1227 | 2 1228 | *Long 1229 | 1230 | 1231 | 1232 | 1233 | 547 1234 | 1235 | %am_start_command 1236 | --el '%intent_extra_key_escaped' '%intent_extra_value_escaped' 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 43 1244 | 1245 | 1246 | 548 1247 | Warning! Intent Extra Type Cannot Be Sent Through "am command", Skipping Extra. 1248 | 1249 | intent_extra_key = "%intent_extra_key" 1250 | 1251 | intent_extra_class = "%intent_extra_class" 1252 | 1253 | intent_extra_value = "%intent_extra_value" 1254 | 1255 | 1256 | 1257 | 547 1258 | %am_start_command_incomplete 1259 | 1 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 664 1267 | false 1268 | 1269 | intent 1270 | setFlags 1271 | {Intent} (int) 1272 | %intent_flags_override_value 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 135 1282 | 1283 | 1284 | Check if intent_extras_set_iterator has next 1285 | 1286 | 1287 | 38 1288 | 1289 | 1290 | 135 1291 | 1292 | 1293 | Check if intent_extras_set_iterator has next 1294 | 1295 | 1296 | 38 1297 | 1298 | 1299 | 300 1300 | 1301 | 1302 | 1303 | 547 1304 | %intent_info 1305 | %intent_info 1306 | 1307 | 1308 | am start command: 1309 | %am_start_command 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 105 1317 | %intent_info 1318 | 1319 | 1320 | 1321 | %copy_intent_info_to_clipboard 1322 | 0 1323 | 1 1324 | 1325 | 1326 | 1327 | 1328 | 37 1329 | 1330 | 1331 | 1332 | %run_am_start_command 1333 | 0 1334 | 1 1335 | 1336 | 1337 | 1338 | 1339 | 37 1340 | 1341 | 1342 | 1343 | %am_start_command_incomplete 1344 | 0 1345 | 1 1346 | 1347 | 1348 | 1349 | 1350 | 548 1351 | Not Running "am start" command since its incomplete 1352 | 1353 | am_start_command = "%am_start_command" 1354 | 1355 | 1356 | 1357 | 664 1358 | false 1359 | 1360 | CONTEXT 1361 | startActivity 1362 | {} (Intent) 1363 | intent 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 137 1373 | 1374 | 1375 | 1376 | 1377 | 38 1378 | 1379 | 1380 | 123 1381 | 1382 | false 1383 | %am_start_command 1384 | 1385 | 1386 | %output 1387 | %errors 1388 | 1389 | 1390 | 1391 | 547 1392 | %exit_code 1393 | %err 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 37 1401 | 1402 | 1403 | Or 1404 | 1405 | %exit_code 1406 | 1 1407 | \%err 1408 | 1409 | 1410 | %errors 1411 | 12 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 547 1418 | %flash_text 1419 | am_start_command = "%am_start_command" 1420 | 1421 | exit_code = "%exit_code" 1422 | 1423 | output = 1424 | " 1425 | %output 1426 | " 1427 | 1428 | errors = 1429 | " 1430 | %errors 1431 | " 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 548 1439 | "am start" command failed 1440 | 1441 | %flash_text 1442 | 1443 | 1444 | 1445 | 105 1446 | %flash_text 1447 | 1448 | 1449 | 1450 | 43 1451 | 1452 | 1453 | 548 1454 | %output 1455 | 1456 | 1457 | 1458 | 137 1459 | false 1460 | 1461 | 1462 | 1463 | 1464 | 38 1465 | 1466 | 1467 | 38 1468 | 1469 | 1470 | 126 1471 | %intent_info 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 664 1479 | false 1480 | 1481 | Objects 1482 | requireNonNull 1483 | {Object} (Object) 1484 | intent 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 37 1494 | 1495 | 1496 | 1497 | %err 1498 | 1 1499 | \%err 1500 | 1501 | 1502 | 1503 | 1504 | 300 1505 | 1506 | 1507 | 1508 | 548 1509 | Error! Intent Object Is Null For Intent Uri. 1510 | 1511 | intent_uri = "%intent_uri" 1512 | 1513 | 1514 | 1515 | 137 1516 | 1517 | 1518 | 1519 | 1520 | 38 1521 | 1522 | 1523 | 664 1524 | intent_uri 1525 | String 1526 | new 1527 | {String} (String) 1528 | %intent_uri 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 547 1538 | %intent_info 1539 | Intent Info: 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 547 1548 | %am_start_command 1549 | am start --user 0 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 300 1557 | 1558 | 1559 | 1560 | 664 1561 | %intent_data_uri 1562 | intent 1563 | getData 1564 | {Uri} () 1565 | %intent_action_pick_activity 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 37 1575 | 1576 | 1577 | 1578 | %intent_data_uri 1579 | 1 1580 | \%intent_data_uri 1581 | 1582 | 1583 | 1584 | 1585 | 547 1586 | %intent_info 1587 | 1588 | data uri: '%intent_data_uri' 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 547 1596 | 1598 | %intent_uri 1599 | #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.reddit.frontpage/.StartActivity;l.profile=-1;end 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 1606 | 547 1607 | %intent_data_uri_escaped 1608 | %intent_data_uri 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 598 1616 | 1617 | %intent_data_uri_escaped 1618 | ' 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | '\\'' 1625 | 1626 | 1627 | %intent_data_uri_escaped 1628 | 12 1629 | 1630 | 1631 | 1632 | 1633 | 1634 | 547 1635 | 1636 | %am_start_command 1637 | -d '%intent_data_uri_escaped' 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 38 1645 | 1646 | 1647 | 300 1648 | 1649 | 1650 | 1651 | 664 1652 | %intent_action 1653 | intent 1654 | getAction 1655 | {String} () 1656 | %intent_action_pick_activity 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 37 1666 | 1667 | 1668 | 1669 | %intent_action 1670 | 1 1671 | \%intent_action 1672 | 1673 | 1674 | 1675 | 1676 | 547 1677 | %intent_info 1678 | 1679 | action: '%intent_action' 1680 | 1681 | 1682 | 1683 | 1684 | 1685 | 1686 | 547 1687 | %intent_action_escaped 1688 | %intent_action 1689 | 1690 | 1691 | 1692 | 1693 | 1694 | 1695 | 598 1696 | 1697 | %intent_action_escaped 1698 | ' 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | '\\'' 1705 | 1706 | 1707 | %intent_action_escaped 1708 | 12 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 547 1715 | 1717 | false 1718 | %intent_uri 1719 | reddit://reddit/r/tasker/#Intent;package=com.reddit.frontpage;B.shortcut_is_from_home_screen=true;end 1720 | 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 547 1727 | 1728 | %am_start_command 1729 | -a '%intent_action_escaped' 1730 | 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 38 1737 | 1738 | 1739 | 300 1740 | 1741 | 1742 | 1743 | 664 1744 | %intent_type 1745 | intent 1746 | getType 1747 | {String} () 1748 | %intent_action_pick_activity 1749 | 1750 | 1751 | 1752 | 1753 | 1754 | 1755 | 1756 | 1757 | 37 1758 | 1759 | 1760 | 1761 | %intent_type 1762 | 1 1763 | \%intent_type 1764 | 1765 | 1766 | 1767 | 1768 | 547 1769 | %intent_info 1770 | 1771 | type: '%intent_type' 1772 | 1773 | 1774 | 1775 | 1776 | 1777 | 1778 | 547 1779 | %intent_type_escaped 1780 | %intent_type 1781 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 598 1788 | 1789 | %intent_type_escaped 1790 | ' 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | '\\'' 1797 | 1798 | 1799 | %intent_type_escaped 1800 | 12 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 547 1807 | 1808 | %am_start_command 1809 | -t '%intent_type_escaped' 1810 | 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 38 1817 | 1818 | 1819 | 547 1820 | 1822 | %copy_intent_info_to_clipboard 1823 | 1 1824 | 1825 | 1826 | 1827 | 1828 | 1829 | 1830 | 300 1831 | 1832 | 1833 | 1834 | 664 1835 | %intent_scheme 1836 | intent 1837 | getScheme 1838 | {String} () 1839 | %intent_action_pick_activity 1840 | 1841 | 1842 | 1843 | 1844 | 1845 | 1846 | 1847 | 1848 | 37 1849 | 1850 | 1851 | 1852 | %intent_scheme 1853 | 1 1854 | \%intent_scheme 1855 | 1856 | 1857 | 1858 | 1859 | 547 1860 | %intent_info 1861 | 1862 | scheme: '%intent_scheme' 1863 | 1864 | 1865 | 1866 | 1867 | 1868 | 1869 | 38 1870 | 1871 | 1872 | 300 1873 | 1874 | 1875 | 1876 | 664 1877 | %intent_package 1878 | intent 1879 | getPackage 1880 | {String} () 1881 | %intent_action_pick_activity 1882 | 1883 | 1884 | 1885 | 1886 | 1887 | 1888 | 1889 | 1890 | 37 1891 | 1892 | 1893 | 1894 | %intent_package 1895 | 1 1896 | \%intent_package 1897 | 1898 | 1899 | 1900 | 1901 | 547 1902 | %intent_info 1903 | 1904 | package: '%intent_package' 1905 | 1906 | 1907 | 1908 | 1909 | 1910 | 1911 | 38 1912 | 1913 | 1914 | 547 1915 | 1917 | false 1918 | %run_am_start_command 1919 | 1 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 300 1927 | 1928 | 1929 | 1930 | 664 1931 | %intent_component 1932 | intent 1933 | getComponent 1934 | {ComponentName} () 1935 | %intent_action_pick_activity 1936 | 1937 | 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 37 1945 | 1946 | 1947 | 1948 | %intent_component 1949 | 1 1950 | \%intent_component 1951 | 1952 | 1953 | 1954 | 1955 | 598 1956 | %intent_component 1957 | ComponentInfo\{(.*)\} 1958 | 1959 | 1960 | 1961 | 1962 | 1963 | $1 1964 | 1965 | 1966 | 547 1967 | %intent_info 1968 | 1969 | component: '%intent_component' 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 547 1977 | %intent_component_escaped 1978 | %intent_component 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 598 1986 | 1987 | %intent_component_escaped 1988 | ' 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | '\\'' 1995 | 1996 | 1997 | %intent_component_escaped 1998 | 12 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 547 2005 | 2006 | %am_start_command 2007 | -n '%intent_component_escaped' 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 38 2015 | 2016 | 2017 | 300 2018 | 2019 | 2020 | 2021 | 547 2022 | 2024 | %override_am_command_flags_value 2025 | 1 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 664 2033 | %intent_flags 2034 | intent 2035 | getFlags 2036 | {int} () 2037 | %intent_action_pick_activity 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 37 2047 | 2048 | 2049 | 2050 | %intent_flags 2051 | 0 2052 | \%intent_flags 2053 | 2054 | 2055 | 2056 | 2057 | 547 2058 | %intent_flags 2059 | 0 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 38 2067 | 2068 | 2069 | 596 2070 | %intent_flags 2071 | 2072 | %intent_flags_hex 2073 | 2074 | 2075 | 2076 | 547 2077 | %intent_info 2078 | 2079 | flags: '%intent_flags (0x%intent_flags_hex)' 2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 547 2087 | %intent_flags 2088 | %intent_flags_override_value 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | %override_am_command_flags_value 2096 | 0 2097 | 1 2098 | 2099 | 2100 | 2101 | 2102 | 547 2103 | %intent_flags_escaped 2104 | %intent_flags 2105 | 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 598 2112 | 2113 | %intent_flags_escaped 2114 | ' 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | '\\'' 2121 | 2122 | 2123 | %intent_flags_escaped 2124 | 12 2125 | 2126 | 2127 | 2128 | 2129 | 2130 | 547 2131 | 2132 | %am_start_command 2133 | -f '%intent_flags_escaped' 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 300 2141 | 2142 | 2143 | 2144 | 300 2145 | 2146 | 2147 | 2148 | 664 2149 | false 2150 | (Set<String>) intent_categories_set 2151 | intent 2152 | getCategories 2153 | {Set} () 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 664 2164 | false 2165 | 2166 | Objects 2167 | requireNonNull 2168 | {Object} (Object) 2169 | intent_categories_set 2170 | 2171 | 2172 | 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 37 2179 | 2180 | 2181 | 2182 | %err 2183 | 0 2184 | \%err 2185 | 2186 | 2187 | 2188 | 2189 | 547 2190 | %is_object_null 2191 | false 2192 | 2193 | 2194 | 2195 | 2196 | 2197 | 2198 | 43 2199 | 2200 | 2201 | 2202 | 547 2203 | %is_object_null 2204 | true 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 38 2212 | 2213 | 2214 | 664 2215 | %intent_categories_set_size 2216 | intent_categories_set 2217 | size 2218 | {int} () 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | 2228 | %is_object_null 2229 | 0 2230 | false 2231 | 2232 | 2233 | 2234 | 2235 | 37 2236 | 2237 | Or 2238 | 2239 | %intent_categories_set_size 2240 | 0 2241 | 0 2242 | 2243 | 2244 | %is_object_null 2245 | 0 2246 | true 2247 | 2248 | 2249 | 2250 | 2251 | 547 2252 | 2253 | %intent_flags_override_value 2254 | 335544320 2255 | 2256 | 2257 | 2258 | 2259 | 2260 | 2261 | 135 2262 | 2263 | 2264 | Get Intent Categories End 2265 | 2266 | 2267 | 38 2268 | 2269 | 2270 | 547 2271 | %intent_info 2272 | 2273 | categories: 2274 | 2275 | 2276 | 2277 | 2278 | 2279 | 2280 | 664 2281 | (Iterator<String>) intent_categories_set_iterator 2282 | intent_categories_set 2283 | iterator 2284 | {Iterator} () 2285 | 2286 | 2287 | 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 664 2295 | 2296 | %intent_categories_set_iterator_has_next 2297 | intent_categories_set_iterator 2298 | hasNext 2299 | {boolean} () 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 37 2310 | 2311 | 2312 | %intent_categories_set_iterator_has_next 2313 | 0 2314 | true 2315 | 2316 | 2317 | 2318 | 2319 | 664 2320 | %intent_category 2321 | intent_categories_set_iterator 2322 | next 2323 | {Object} () 2324 | 2325 | 2326 | 2327 | 2328 | 2329 | 2330 | 2331 | 2332 | 2333 | 547 2334 | %intent_info 2335 | '%intent_category', 2336 | 2337 | 2338 | 2339 | 2340 | 2341 | 2342 | 547 2343 | %intent_category_escaped 2344 | %intent_category 2345 | 2346 | 2347 | 2348 | 2349 | 2350 | 2351 | 598 2352 | 2353 | %intent_category_escaped 2354 | ' 2355 | 2356 | 2357 | 2358 | 2359 | 2360 | '\\'' 2361 | 2362 | 2363 | %intent_category_escaped 2364 | 12 2365 | 2366 | 2367 | 2368 | 2369 |
2370 | 2371 | 1588617967656 2372 | 1589603913648 2373 | 925 2374 | Send Shortcut Intent With TaskerLauncherShortcut 2375 | 100 2376 | 2 2377 | 2378 | 300 2379 | 2416 | 2417 | 2418 | 547 2419 | %task_name 2420 | Send Shortcut Intent With TaskerLauncherShortcut 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 2427 | 548 2428 | URISyntaxException: Invalid Shortcut Intent Uri 2429 | 2430 | 2431 | 2432 | 547 2433 | %result_code 2434 | 1 2435 | 2436 | 2437 | 2438 | 2439 | 2440 | 2441 | 135 2442 | 2443 | 2444 | Return 2445 | 2446 | 2447 | 38 2448 | 2449 | 2450 | 37 2451 | 2452 | 2453 | 2454 | %shortcut_intent_uri 2455 | 2 2456 | *category=com.android.launcher3.DEEP_SHORTCUT;* 2457 | 2458 | 2459 | 2460 | 2461 | 37 2462 | 2463 | 2464 | 2465 | %SDK 2466 | 6 2467 | 25 2468 | 2469 | 2470 | 2471 | 2472 | 548 2473 | Dynamic or Pinned DEEP_SHORTCUT Intents Can Only Be Sent On API >= N_MR1(25) 2474 | 2475 | 2476 | 2477 | 547 2478 | %result_code 2479 | 1 2480 | 2481 | 2482 | 2483 | 2484 | 2485 | 2486 | 135 2487 | 2488 | 2489 | Return 2490 | 2491 | 2492 | 38 2493 | 2494 | 2495 | 300 2496 | 2497 | 2498 | 2499 | 43 2500 | 2501 | 2502 | 547 2503 | 2504 | %skip_set_default_launcher 2505 | 1 2506 | 2507 | 2508 | 2509 | 2510 | 2511 | 2512 | 38 2513 | 2514 | 2515 | 300 2516 | 2517 | 2518 | 2519 | 37 2520 | 2521 | 2522 | 2523 | %skip_set_default_launcher 2524 | 0 2525 | 1 2526 | 2527 | 2528 | 2529 | 2530 | 135 2531 | 2532 | 2533 | 2534 | Set Default Launcher To TaskerLauncherShortcut End 2535 | 2536 | 2537 | 38 2538 | 2539 | 2540 | 549 2541 | %result_code 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 130 2548 | Get And Set Default Launcher 2549 | 2550 | %priority 2551 | 2552 | set 2553 | %taskerlaunchershortcut_launcher_package_and_activity_name 2554 | %result_code 2555 | 2556 | 2557 | 2558 | 2559 | 2560 | 37 2561 | 2562 | 2563 | 2564 | %result_code 2565 | 1 2566 | 0 2567 | 2568 | 2569 | 2570 | 2571 | 547 2572 | 2574 | %normal_default_launcher_package_and_activity_name 2575 | com.teslacoilsw.launcher/com.teslacoilsw.launcher.NovaLauncher 2576 | 2577 | 2578 | 2579 | 2580 | 2581 | 2582 | 547 2583 | %result_code 2584 | 1 2585 | 2586 | 2587 | 2588 | 2589 | 2590 | 2591 | %result_code 2592 | 0 2593 | \%result_code 2594 | 2595 | 2596 | 2597 | 2598 | 135 2599 | 2600 | 2601 | Return 2602 | 2603 | 2604 | 38 2605 | 2606 | 2607 | 300 2608 | 2609 | 2610 | 2611 | 300 2612 | 2613 | 2614 | 2615 | 549 2616 | %result_code 2617 | 2618 | 2619 | 2620 | 2621 | 2622 | 656793780 2623 | false 2624 | 2625 | 2626 | 1 2627 | java.lang.Integer 2628 | %shortcut_intent_uri 2629 | java.lang.String 2630 | %shortcut_intent_uri 2631 | java.lang.String 2632 | <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%result_code 2633 | Result Code 2634 | The result code for sending shortcut intent. 2635 | 0 for success, otherwise a failure.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg 2636 | Error Message 2637 | The err message of the action.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray> 2638 | [Ljava.lang.String; 2639 | com.agnostic.apollo.taskerlaunchershortcut.extra.STRING_SHORTCUT_INTENT_URI 2640 | java.lang.String 2641 | true 2642 | java.lang.Boolean 2643 | 2644 | 2645 | com.agnostic.apollo.taskerlaunchershortcut 2646 | com.agnostic.apollo.taskerlaunchershortcut.ui.activity.PluginActivity 2647 | 2648 | 2649 | 2650 | 547 2651 | %taskerlaunchershortcut_errmsg 2652 | %errmsg 2653 | 2654 | 2655 | 2656 | 2657 | 2658 | 2659 | %errmsg 2660 | 1 2661 | \%errmsg 2662 | 2663 | 2664 | 2665 | 2666 | 547 2667 | %taskerlaunchershortcut_result_code 2668 | %result_code 2669 | 2670 | 2671 | 2672 | 2673 | 2674 | 2675 | 300 2676 | 2677 | 2678 | 2679 | 300 2680 | 2681 | 2682 | 2683 | 300 2684 | 2685 | 2686 | 2687 | 37 2688 | 2689 | 2690 | 2691 | %skip_set_default_launcher 2692 | 0 2693 | 1 2694 | 2695 | 2696 | 2697 | 2698 | 135 2699 | 2700 | 2701 | 2702 | Set Default Launcher Back To Normal Launcher End 2703 | 2704 | 2705 | 38 2706 | 2707 | 2708 | 549 2709 | %result_code 2710 | 2711 | 2712 | 2713 | 2714 | 2715 | 130 2716 | Get And Set Default Launcher 2717 | 2718 | %priority 2719 | 2720 | set 2721 | %normal_default_launcher_package_and_activity_name 2722 | %result_code 2723 | 2724 | 2725 | 2726 | 2727 | 2728 | 37 2729 | 2730 | 2731 | 2732 | %result_code 2733 | 1 2734 | 0 2735 | 2736 | 2737 | 2738 | 2739 | 547 2740 | %result_code 2741 | 1 2742 | 2743 | 2744 | 2745 | 2746 | 2747 | 2748 | %result_code 2749 | 0 2750 | \%result_code 2751 | 2752 | 2753 | 2754 | 2755 | 135 2756 | 2757 | 2758 | Return 2759 | 2760 | 2761 | %taskerlaunchershortcut_result_code 2762 | 0 2763 | 0 2764 | 2765 | 2766 | 2767 | 2768 | 38 2769 | 2770 | 2771 | 547 2772 | 2773 | %taskerlaunchershortcut_launcher_package_and_activity_name 2774 | com.agnostic.apollo.taskerlaunchershortcut/com.agnostic.apollo.taskerlaunchershortcut.LauncherHomeActivity 2775 | 2776 | 2777 | 2778 | 2779 | 2780 | 2781 | 300 2782 | 2783 | 2784 | 2785 | 37 2786 | 2787 | 2788 | 2789 | %taskerlaunchershortcut_result_code 2790 | 1 2791 | 0 2792 | 2793 | 2794 | 2795 | 2796 | 547 2797 | %result_code 2798 | %taskerlaunchershortcut_result_code 2799 | 2800 | 2801 | 2802 | 2803 | 2804 | 2805 | 43 2806 | 2807 | 2808 | 547 2809 | %result_code 2810 | 0 2811 | 2812 | 2813 | 2814 | 2815 | 2816 | 2817 | 38 2818 | 2819 | 2820 | 300 2821 | 2822 | 2823 | 2824 | 547 2825 | %result 2826 | %result_code 2827 | 2828 | 2829 | 2830 | 2831 | 2832 | 2833 | 547 2834 | 2835 | %result 2836 | 2837 | %taskerlaunchershortcut_errmsg 2838 | 2839 | 2840 | 2841 | 2842 | 2843 | 2844 | %taskerlaunchershortcut_errmsg 2845 | 1 2846 | \%taskerlaunchershortcut_errmsg 2847 | 2848 | 2849 | 2850 | 2851 | 126 2852 | %result 2853 | 2854 | 2855 | 2856 | 2857 | 2858 | 2859 | 547 2860 | %shortcut_intent_uri 2861 | %par1 2862 | 2863 | 2864 | 2865 | 2866 | 2867 | 2868 | 547 2869 | false 2870 | %shortcut_intent_uri 2871 | reddit://reddit/r/tasker/#Intent;package=com.reddit.frontpage;B.shortcut_is_from_home_screen=true;end 2872 | 2873 | 2874 | 2875 | 2876 | 2877 | 2878 | 664 2879 | false 2880 | 2881 | Intent 2882 | parseUri 2883 | {Intent} (String, int) 2884 | %shortcut_intent_uri 2885 | 0 2886 | 2887 | 2888 | 2889 | 2890 | 2891 | 2892 | 2893 | 37 2894 | 2895 | 2896 | Or 2897 | 2898 | %err 2899 | 12 2900 | *category=com.android.launcher3.DEEP_SHORTCUT;* 2901 | 2902 | 2903 | %shortcut_intent_uri 2904 | 0 2905 | \%par1 2906 | 2907 | 2908 | 2909 | 2910 | 2911 | 1589596274266 2912 | 1589598092503 2913 | 955 2914 | TaskerLauncherShortcut DEEP_SHORTCUT Template 2915 | 100 2916 | 2917 | 300 2918 | 2922 | 2923 | 2924 | 547 2925 | 2927 | %shortcut_intent_uri 2928 | #Intent;action=android.intent.action.MAIN;category=com.android.launcher3.DEEP_SHORTCUT;launchFlags=0x10200000;package=com.kiwibrowser.browser;component=com.kiwibrowser.browser/com.google.android.apps.chrome.Main;i.profile=0;S.shortcut_id=dynamic-new-incognito-tab-shortcut;end 2929 | 2930 | 2931 | 2932 | 2933 | 2934 | 2935 | 130 2936 | Send Shortcut Intent With TaskerLauncherShortcut 2937 | 2938 | %priority 2939 | 2940 | %shortcut_intent_uri 2941 | 2942 | %result 2943 | 2944 | 2945 | 2946 | 2947 | 2948 | 548 2949 | %result 2950 | 2951 | 2952 | 2953 | 2954 | 1589596274266 2955 | 1589598023811 2956 | 958 2957 | TaskerLauncherShortcut Non DEEP_SHORTCUT Template 2958 | 100 2959 | 2960 | 300 2961 | 2965 | 2966 | 2967 | 656793780 2968 | 2969 | 2970 | 2971 | 1 2972 | java.lang.Integer 2973 | reddit://reddit/r/tasker/#Intent;package=com.reddit.frontpage;B.shortcut_is_from_home_screen=true;end 2974 | java.lang.String 2975 | reddit://reddit/r/tasker/#Intent;package=com.reddit.frontpag 2976 | java.lang.String 2977 | <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%result_code 2978 | Result Code 2979 | The result code for sending shortcut intent. 2980 | 0 for success, otherwise a failure.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg 2981 | Error Message 2982 | The err message of the action.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray> 2983 | [Ljava.lang.String; 2984 | com.agnostic.apollo.taskerlaunchershortcut.extra.STRING_SHORTCUT_INTENT_URI 2985 | java.lang.String 2986 | true 2987 | java.lang.Boolean 2988 | 2989 | 2990 | com.agnostic.apollo.taskerlaunchershortcut 2991 | com.agnostic.apollo.taskerlaunchershortcut.ui.activity.PluginActivity 2992 | 2993 | 2994 | 2995 | 547 2996 | %result 2997 | %result_code 2998 | %errmsg 2999 | 3000 | 3001 | 3002 | 3003 | 3004 | 3005 | 548 3006 | %result 3007 | 3008 | 3009 | 3010 |
3011 | --------------------------------------------------------------------------------