Tasker For Android
Tasker For Android
Tasker For Android
html
Tasker
This document is a one-page compilation of the on-device userguide intended for printing out for use
Home as a reference.
Download
Tasker Userguide
FAQs
Guides Profiles
Main Screen
Reviews Contexts
Application
Wiki Time
Forum Day
Location
Support Location Edit
State
Userguide A-Z
(5.0+) Event
Index: en Event Edit
es fr zh A-Z
Tasks
1 Page: en General
Task Edit
More Flow Control
Developers Task Widgets / Shortcuts
Configuration
History Actions
Action Edit
Privacy
Settings
Policy
A-Z
Release Scenes
Notes General
Scene Edit
Next Scene Properties
Version Scene Elements
Button CheckBox Doodle EditText Image Map Menu Number Picker Oval Rectangle
Slider Spinner Text Toggle Video Web
Element Edit
Variables
General
Miscellaneous
Android System Power Management
App Creation
Beginner Mode
CPU Control
Encryption
Gestures
Intents
Java
JavaScript
Icons
Location Without Tears
Maths
Pattern Matching
MIDI
Power Usage
Run Log
FAQs
How Do I... / Can I... ?
Usage Problems
Why... ?
App Creation
Other
Web Links
Wiki (Step-throughs, Recipes)
Tour
Bugs / Limitations
Plans
Developers
Release Notes
Main Screen
This is the first screen shown when you startup Tasker. It allows you to organize and configure
Tasker's four main 'building blocks': Profiles, Tasks, Scenes and Variables.
Main Tabs
Profiles
Tasks
Scenes
Variables
Action Bar
Menus
Projects
Main Tabs
Profiles
Each item in the list represents a profile. The profile links contexts (conditions) on the left to tasks which
should be run on the right. The profile name is green if the profile is active. There are three main parts to
each profile.
1. Title Bar
This shows the profile name (or description if it has no name) and a switch on the right shows whether
the profile is enabled or not.
Click on the name to expand / collapse the profile. When expanded, the contexts and tasks
(described below), are visible.
Long-click on the profile name to get profile options or to drag profile(s) around
Click on the switch to control whether the profile is enabled or not.
Important: the switch being set to on does not mean the profile is active (will run its tasks), it means that
the profile can become active if its conditions are met.
2. Contexts
On the left hand side of the profile are an icon and text for each context in the profile. The contexts
dictate when the profile should become active. When all contexts are active then the profile will be
active.
You can configure what clicks and long-clicks on contexts do in Menu / Prefs / UI.
3. Tasks
On the right hand side of the profile are one or two tasks to carry out based on its activation status.
A task indicated with a green, right-pointing arrow is an entry task, executed when the profile first
becomes active.
A task indicated with a red, left-pointing arrow is an exit task, executed when the profile becomes
inactive again.
Exception: a profile containing an event context or a repeating or non-ranged time context has two green
arrows, to denote that both tasks are executed immediately because the profile activation and
deactivation is instantaneous.
Click on the Profiles tab when it is already selected for general profile-related options such as sorting.
Tasks
The task list shows the named tasks which have been created.
Note that a profile can be assigned an anonymous task (one without a name) which is not accessible in
the task list, only via the relevent profile in the profile list.
Click on the Tasks tab when it is already selected for general task-related options such as sorting.
Scenes
The scene list shows the scenes which have been created.
Scenes with a green name have been created but may be invisible (hidden).
Click on the Scenes tab when it is already selected for general scene-related options such as sorting.
Variables
By default, all global user-variables that Tasker knows about are listed, which includes any that have a
value set or are mentioned somewhere in a profile, task or scene.
Note that variables whose names are all lower-case are local variables and not shown because they are
only valid within the task that refers to them.
Click on the Vars tab when it is already selected for general variable-related options such as sorting and
filtering.
Indexed (button)
includes variables whose names end in a number e.g. %LOC3, otherwise they are excluded.
Empty (button)
includes variables which have currently have no value assigned, deselect to show only variables
that have a value.
Unlike most screens in Tasker, changes made in the variable list cannot be cancelled.
Action Bar
Apply Button
Save and apply any changes which have been made without exiting the UI.
This is unnecessary prior to leaving the UI via the back button or home key, it's just for convenience
when testing changes.
Overflow Button
Menus
Links to websites with projects, profiles etc offering solutions for common problems. Important: once
downloaded you need to import the file into your active user data. For example, profiles are imported by
long-clicking the profile tab and selecting Import.
Clear
Removes all data that has been created to that point. Does not remove preferences (use Menu /
Preferences and click Defaults for that) or variables (long-click on the Variables tab for that).
Backup
Restore
Projects
Tasker allows organisation of profiles, tasks, scenes and variables into groups called Projects, each with
a separate Project Tab.
The first tab has a slightly special status, it cannot be removed and anything which is not a member of
another project is placed there.
Application Context
An Application Context is activated when selected parts of one or more application are
running.
Important: in Android versions after (and including) L, app detection is much less accurate. For some
apps it may not work at all, for others it may activate and never deactivate.
Controls
App button
When checked, indicates that the context will become active if any of the selected applications is in the
foreground, meaning it is currently being displayed to the user.
Services button
When checked, indicates that the context will also become active if a service associated with any of the
selected applications is running.
Note that services other than the obvious ones may be running. For example, the default Play Music app
may have a download service running even when not playing music at a particular time.
Invert button
When the context is inverted, it will become active when any application apart from the selected ones
is matched
All button
Usually only applications are shown for selection which would usually be shown in the launcher. The All
button shows certain other launchable activities.
Application Checking
When any profiles have application contexts specified, Tasker checks frequently to see if one of those
applications has been launched. The default is every 1.5 seconds.
If you would like quicker response, or you suspect this is severely increasing your battery usage, you can
change this value in preferences (select Menu / Preferences / Monitor from the main screen).
Time Context
A Time Context specifies a particular range, or one (or more) points in time. There are three
major components, at least one of which must be selected (by enabling its checkbox on the left):
From Time: the starting time of the range. If it's not specified, 00:00 is assumed.
To Time: the end time of the range, inclusive. The context will deactivate after the end of the
specified minute.
If To Time is not specified then 23:59 is assumed i.e. the context deactivates at midnight.
Repeat: if no repeat is selected, the context is assumed to be a continuous range which starts at
From Time and ends at To Time. If a repeat is specified, the first occurrence is at From Time and
then every X hours or minutes until End Time.
When not in Beginner Mode, it's possible to specify a global user variable as the source of the From
The variable contents must specify the hours and minutes in 24-hour format and separated by a period
(dot) or colon e.g. 13.45. Leading 0s can be ommited e.g. 9.7 for seven-minutes-past-nine-in-the-
morning.
Alternatively, the time can be specified in seconds-since-the-epoch format, in which case only the hour
and minute part of the specification are used.
When the variable value changes, the time context is reevaluated which may result in it activating or
deactivating. If the variable value does not specify a valid time then the profile will deactivate (if it's
already activated).
Note: in some cases it may be wise to disable the profile (via the Profile Status action) before changing
the associated variable values. For example, if your time context is from 16.00 to 16.00 (i.e. acting as an
event) and it should be changed to 17.00,17.00, if you don't disable it first then as soon as you change
the first value the time context will become a 23 hour range (17.00-16.00) and probably activate.
Notes:
to specify a precise time, set From and To times the same. In that case, the context is treated as an
instant event, it it only active for a fraction of a second, so no setting restoration is done.
each repeat (if Repeat is set) is also treated like an instant event.
Day Context
A Day Context allows specification of one or more months and/or days of the week/month.
Month Specification
The months are listed at the top, any of which can be selected. Selecting no month has the same meaning
as selecting every month i.e. has no restriction on when the profile will become active.
Days of the week (Sunday, Monday etc) and/or month (1st, 9th etc) can be selected independently with
the pulldown centre-right. This will initially be for Week Days if there are any defined, otherwise Month
Days.
If you select both days of the week and days of the month, it requires both conditions to be fulfilled for
the profile to become active e.g. selecting Mon,Tue and 11th means the profile will become active when
the day is a Mon or Tuesday and simultaneously the 11th day of the month.
If you are unsure if you have specified the day(s) you require, click the Done button and you will see a
verbal description at the top of the Profile Edit screen. You can click on this to try again if it's not
correct.
Location Context
A location context specifies a circular geographical area in which it is active. It is formed by a
centre point (latitude, longitude) plus a radius around that point.
Location Providers
A location provider is a method of supplying geographical coordinates. Tasker must use one or more
location providers to be able to decide when a location context should become active or inactive.
GPS
The most accurate provider available (around +-10m), but its performance degrades quickly indoors and
it uses a relatively large amount of power.
To set the frequency of GPS fixes, see Menu / Preferences / Monitor. GPS Check Time determines
the check frequency in seconds while the device is awake, Off Check Time while the device is asleep.
GPS will only be used for a particular context if it is specified in the location edit screen.
Network
This provider uses a combination of cell-towers and WiFi information (if wifi is enabled) to determine
the device's geographical location. It is less power-hungry than GPS, but also less accurate (sometimes
+- several kilometres) and requires data network availability.
Network will only be used for a particular context if it is specified in the location edit screen.
See also:
Location Edit
This screen allows configuration of a Location Context.
Map Display
The map shows the location (base of the flag icon), radius and names of all defined location contexts
The location currently being defined has a yellow base, other location contexts have a blue base.
Map Controls
Use the pull-down selector under the map to specify the radius for this context.
Important: if your radius is too small compared to the accuracy of the fixes you are receiving, your
context may never go active. If you can't get a fix, try increasing the radius. Typically, a good radius
would be around twice the accuracy of the fixes you are receiving.
If you have no internet available in order to retrieve the map tiles, you can still use the Get Fix button
(see below) to specify your current location.
Acquires a location fix using the enabled and available providers (make sure the GPS Button is clicked
first if you want to use GPS).
Once a fix is acquired, the latitude, longitude and radius of this location context are set according to it. If
you reduce the radius after a fix, Tasker may no longer accurately detect whether you are in or out of the
context.
When trying to determine current location, Tasker will keep going with fixes until they stop improving
(e.g. as the GPS locks on to more satellites). If you get impatient you can press the Get Fix button again
to stop the process (its label is changed to Stop while a fix is being acquired).
Allows entry of an address for which this location context should be active.
Bottom Buttons
Net Button
The Net toggle button specifies whether to use the Network location provider to monitor for this location
GPS Button
The GPS toggle button specifies whether to use GPS to monitor for this location (assuming it is available
on the device). If GPS is not used, the network will need to be available in order to query for location
fixes based on cell-towers or WiFi data.
State Context
A State Context allows specification of the continuing state of a software or hardware entity.
The State Edit screen allows configuration of the state and its parameters.
State Name
The name of the state is given at the top of the screen. Clicking on it allows changing to another state
type.
Next to the name is a button to show help for the displayed state type and its parameters. Be sure to
check the help text if you have trouble with a particular state.
State Parameters
General Parameters
All states have parameters to specify more details about the state.
Invert Parameter
All states have an invert parameter, which specifies that the context should become active when it
would usually be inactive, and vice-versa.
Event Context
An Event Context allows specification of an event which is needed to activate its profile e.g.
SMS received, screen has gone off.
Events are a little different to other contexts because they are instantaneous whereas other contexts
usually have a duration.
This means that it is nonsensical to specify that e.g. the screen brightness should be set to X for the
duration of the event, so Tasker assumes that all settings actions should persist beyond the event.
For more information about specifying events, see the Event Edit screen.
Event Parameters
When a task is triggered by an event, the parameters of the event that ocurred are passed to the task so
that it can make decisions based on the event details.
The order of elements of the array have values which match the order of the parameters of the event.
Example: if an event's second parameter is an Application, %evtprm2 in the launched task will be set to
the label of the application which triggered the event.
Event Edit
This screen allows configuration of an Event Context.
Event Name
The name of the event is given at the top of the screen. Clicking on it allows changing to another event
type.
In the top right is a button to show help for the displayed event type.
Priority
Selects the priority at which this event will be detected. An event can be processed by other Tasker
Profiles, other installed applications and system processes.
If priority is high, then this profile will be more likely to detect the event before other processes, and vice
versa.
Stop Event
If checked, then once this profile has dealt with the event, other user or system applications will no
longer be able to see it.
You can achieve different effects by combining Priority and Stop Event. For instance, if you want to
show a Tasker menu when the camera button is pressed, you would set Priority High and check the
Stop Flag, because you do not want the camera application to appear afterwards.
Event Parameters
Some events have paramaters to specify more details about the event. To get help on particular
parameters, click the question-mark icon at top right.
If you would like to make more complex comparions (e.g. mathematical expressions), leave the event
parameter blank and instead put a condition on the first action of the task you execute with the profile.
Tasks
A task is simply a set of actions which are performed one after the other.
When creating a profile, widget or shortcut, often the associated task will consist only of one or two
actions which will not be reused. For this case, Tasker allows you to create a task without a name (an
Anonymous task).
Task Visibility
Anonymous tasks are only visible when editing the profile that they are associated with.
Named tasks are visible on any screen that allows task editing. Any changes made to the set of tasks in
any screen is reflected in all the other screens.
Task Icon
Each task has an associated icon, by default a question mark. The icon is used
to represent the task on the home screen when it is used as a widget or shortcut
when the task is turned into and app
for easier identification of the task within the Tasker UI
Deleting Tasks
Named tasks can only be deleted via the Delete button on the Task Edit screen. Unnamed tasks are
deleted automatically when the profile they are part of is deleted, or a named task is selected for that
profile.
When a task is deleted that is referred to by a previously created named widget or task, the widget will
stop working.
Android does not allow Tasker to automatically remove the widget from the Home Screen.
Task Scheduling
When there is a single task waiting to be executed, it's actions are executed one-by-one until finished.
When there are several tasks in the queue at once, it's important to understand how they are handled:
only one action from the same action group can be executed at once to prevent interference
the task in the queue with the highest priority goes first and blocks lower priority tasks
tasks with the same priority take turns executing an action each, starting with the most recent
addition to the queue unless one task is a child of the other (started via Perform Task), in which
case the child executes first.
Task priority, 0 to 50 inclusive with 0 being lowest, is determined according to whatever causes the task
to run.
enter tasks run by profiles have the priority specified in Profile Properties, the default is 5.
exit tasks run by profiles have the priority specified in Profile Properties plus 1001, the default is
therefore 1016
tasks run by widgets or shortcuts can be set in Task Properties when the widget/shortcut is
created, the default is 7
tasks run from scene elements have priority one more than the task which showed the scene
tasks run from the Test button in the task edit screen have priority 100 by default, long-click the
play buttin to choose a different one.
if you want a particular task to always interrupt other tasks that may be executing, give it a high
priority
if you have a task that lasts for a while, you probably want to give it a low priority so it doesn't
block other tasks from being executed.
Action Groups
Actions are divided into groups for scheduling based on how long the action takes to execute and what it
interferes with:
Wait Actions
Wait and Wait Until are special cases. The rules for handling them are complicated and try to do the
'best thing' dependent on the situation.
Same-Profile Tasks
Tasks launched by the same profile by default always execute in the order in which they are launched.
Other tasks from the same profile remain completely inactive until any previous task from the same
profile is complete. The main purpose of this rule is to correctly handle rapid changes in a profile's
activation state.
This behaviour can be disabled by deselecting Enforce Task Order in the Profile Properties dialog.
Example
This example demonstrates the effect of Enforce Task Order and shows also how sub-tasks launched by
Perform Task are handled.
Profile: Example
Enter Task: Enter1
Perform Task, Enter2
Exit Task: Exit1
Perform Task, Exit2
Enter1 and Enter2 are both guaranteed to finish before either of Exit1 or Exit2. Whether Enter1 or
Enter2 finishes first depends on their relative priority. Same for Exit1 and Exit2. All 4 tasks compete
based on priority against tasks from other profiles. Exit tasks have a higher base priority so will finish
before Enter tasks.
If the profile goes active and inactive quickly, Enter1, Enter2, Exit1 and Exit2 will all compete purely on
priority. Since Exit tasks have higher base priority, Exit1 and Exit2 will probably finish first.
Collisions
Sometimes a task needs to be executed of which a copy is already executing. This can happen quite
often e.g. when a task widget button is pressed twice quickly, or a task contains a Wait action or shows a
dialog.
The way in which a collision is resolved is specified by the user. There are 3 options:
Note that the last option can lead to several copies of a task all running at once.
By default, after a few seconds of the screen being off Android will power down the device and thus
running tasks will be paused.
In the Task Properties dialog, it can be specified that a task should keep running.
Dialogs
An action that shows some kind of dialog (such as a lock screen, popup, menu) blocks execution of any
other action, even one of higher priority, until it is completed.
These are exceptions. A wait action can be interrupted by another task's action and will resume (if
necessary) when the other task's action is finished.
Killing Tasks
If you have a problem with a task that never ends, you can manually end tasks with the Kill button in
the Task Edit screen.
Task Edit
This dialog allows editing of the actions in a task, and various properties of the task.
Action List
The main part of the screen is a list of the actions contained in the currently selected task.
If a particular action is a setting, that will be indicated on the right-hand side of the action.
If an action has had a condition set for it, the condition is shown with a red or green bar next to it; green
indicates that the condition is currently met (the action will execute), red indicates the opposite. Of
course, when the task is executed it could be that it changes things so that the condition is then met.
If an action is within an If / End If block it is displayed indented with a red or green margin. The
colours have the same significance as for individual action conditions described above.
If an action is within a For loop it is displayed indented with a grey margin. If the For action has a
condition on it which is not met, the margin will be red (because the actions in the loop will never
execute, like an If / End If block).
Play/Step Buttons
The Play button will run the task right through till the end, the Step button will run a single task each
During tasting, the current action is shown with an arrow and the next task with a faded arrow.
The success of each action is shown when it finishes with a green (action OK) or red (action failed)
circle.
Tasks run via the Play or Step button have priority 10.
Long-click the Play or Test button to manually set the priority of the task when it runs during the test.
Please be aware that setting a lower priority can result in interference from other tasks running which are
e.g. triggered by profiles.
Tip: pressing the Step button while a task is playing will cause the task to switch to stepping mode when
the current action finishes.
Add an action to the end of the task. When in multi-select mode, adds an action after the current
selected item, if only one item is selected.
Task Properties
Show extended properties for the task. Not visible in Beginner Mode.
Task Icon
Shows the icon associated with the task. Clicking on it allows changing of the icon.
Menu Items
Action Labels
Toggle display of action labels (which are specified in the Action Edit screen).
Param Names
Icons
Action Edit
This screen allows configuration of a single action in a Task.
General
At top left is the name of the action. Tapping on this allows it to be changed.
Bottom-right is a help button. Please be sure to read the action help of every action before you use it for
the first time, there may be e.g. device specific restrictions you should know about.
Action Parameters
A parameter gives extra detail about how the action is to be carried out.
Text Parameters
are sometimes optional: in that case the text Optional will appear as a hint unless the entry box has
already been filled in
sometimes have a dialog to help you fill in a value which you can access by clicking the
magnifying glass icon next to them
can have variables automatically inserted by clicking the tag icon next to them.
Clicking the arrows icon next to numeric sliders allows you to specify the number textually or use a
variable for the parameter instead, if the value will not be known until the action is actually executed.
If (Condition) Parameter
(most actions)
Allows specification of one or more conditions which must match if this action is to execute.
Single conditions consist of a left-hand side (usually a variable name), an operator and a right-hand-side
for example %number, Equals, 1 indicates that the action will be executed if the variable %number
has the value 1.
When more than one condition is specified, they must be combined via And (all conditions must be true),
Or (at least one condition must be true) or Xor (exactly one must be true). These 'combiners' are called
boolean operators.
Usually, 2 or 3 conditions will be combined with all Ands or all Ors, but in order to allow more
complicated logic, Tasker also offers And and Or in high-precedence versions. Of the 4 boolean
operators which are available, the selection goes from low to high precedence ones.
The higher the precedence of a boolean operator, the further to the right it is shown. This enables the
logical groups to be visualised.
Examples:
True | False & True | False is the same as ( True | False ) & ( True | False ) so is True.
True & False | True & False is the same as True & ( False | True ) & False so is False.
True & False | True |+ False is the same as True & ( False | ( True | False ) ) so is
True.
Note that the order of the conditions can mean that some conditions are never evaluated. For instance,
when two conditions are present and the one above an And is false then the condition below it will never
be evaluated. This can be advantageous if the second condition takes relatively more resources e.g.
involves matching against a lot of text.
By default, if an action fails with an error (e.g. the user specified to delete a file that doesn't exist) Tasker
will stop the task immediately and the remaining actions will never be executed.
This parameter specifies that the task should continue even if this action fails.
In addition, if it's checked, errors will be logged in the system log as diagnostics instead of errors and
error popups will be surpressed.
Label Parameter
(all actions)
A label for the action which is shown on the Task Edit screen. This parameter could also be used to add
comments to actions to help understand how the task works.
Labels are also used with Goto actions to jump from one part of the task to another.
Menu Options
Search
Search for and jump to a specified action. The entered term is searched against action properties in the
following order:
The matching is case-insensitive. Searching starts from the current action and wraps around. Only the
header action (
If
or For) of closed blocks is searched.
Scenes
Introduction
Tasker uses scenes for things like popup dialogs, menus and getting input from the user but scenes can
actually be displayed by the user whenever desired, meaning they can be used for things like creating
simple user-designed applications or showing extra controls over the top of (selected) existing
applications.
Displaying Scenes
Actions: Enter Key, HTML Popup, Lock, Menu, Popup, Popup Task Buttons and Variable
Query
These actions use a built-in scene with the same name as their action. After creating a task with such an
action, the associated scene can be found under the Scenes tab on the main Tasker screen. That scene
can be edited so that e.g. all Popup actions have the same style because they all use the same scene.
The parameters specified in the action are applied to the scene before it is show. For instance, if the
scene has a Title element it will be set to the title specified in the action and the scene resized
appropriately.
It might be desirable to have a different style for e.g. some Popup actions, in which case:
Scene Category Actions: Create Scene, Show Scene, Hide Scene, Destroy Scene
These allow a completely free hand over when a scene should be displayed and it's life-cycle. They all
act on scenes pre-designed in the Scenes tab.
Usually, only Show Scene and Destroy Scene will be used, however sometimes it's useful for a scene to
be created but not visible to the user:
by hiding a scene instead of completely destroying it, the settings of the elements are retained for
next time it is shown
the values of the elements in the scene can be changed to track certain events so that the scene
can be immediately displayed when required without any configuration
Scene Elements
Geometry
It's size and position on the screen. An element's geometry is specified in the scene editor.
Content
Specified under the UI tab in the element editor. Some elements also have a Background tab. A Menu
element has an additional Items tab.
Event Tasks
What should happen when the user interacts with the element.
Specified under the right-most tabs after clicking on the element in the element editor. There are
different events depending on the type of element. For instance, a Button has tap and long-tap events
while a Slider has a value-set event.
Event tasks are run at priority one higher than the task which displayed the scene
Local variables set by event tasks are visible to all tasks in the same scene.
In the Scenes action category, there are several actions for setting the properties of scene elements. You
can use these for a wide variety of purposes e.g.
when a slider value is set, change the zoom of an associated map element
set the size of an element depending on current light level
animate elements around a scene
Note that actions that affect scene elements can only be used when the scene has already been created
(via Create Scene or Show Scene). The scene does not have to be visible.
Scene Edit
The scene editor is used for designing custom scenes.
Display Area
The main part of the editor, where the position and size of elements are arranged. The display area has
two modes dependent on the setting of the magnifying glass icon in the corner.
Preview Mode
Editing Mode
When moving and resizing, the sides of elements are snapped to a grid to make alignment easier. The
grid size is unique to each scene and can be changed via Menu / Grid Size.
Tool Bar
Touch Mode
There are four touch modes which decide the effect of taps on the display area. Normal Mode is
described above. Edit Mode is the same as Normal Mode except that all controls except the Touch Mode
selector are hidden to allow access to small controls along the scene edges. Move Mode is intended to
make it easier to reposition elements. Resize mode is for making resizing easier.
Element Picker
Allows selection of an element by name. This is most useful when an element is difficult to directly click
on due to other elements or because it's very small.
Both short and long clicks on the element names behave the same as short and long clicks on the element
itself.
Undo
New Element
Create a new element in the middle of the scene. Useful if the scene is already cluttered with a lot of
elements so there is no free space.
Menu Options
Background Colour
A complex background can be set by long-tapping an element and specifying it as the background
element. If a uniform colour is sufficient, it can also be specified with this menu option.
However, there is a special case where it's a good idea to specify a background colour even if you
already have a background element. A scene is resized to fit the container into which it's placed, but in
some cases (e.g. when it is shown as a full screen activity) there will be margins left on one side of the
container because the aspect ration of the scene (the relative size of its width and height) of a scene is
never changed. In such a case, the margins are coloured with the background colour specified here.
Set Background
An element which is set as the scene background is resized to always fill the whole scene and interferes
less with selection of other elements. To reverse this, long-tap on it and select Set Foreground.
Pin
When an element is positioned satisfactorily, it can be pinned to make it easier to select and manipulate
other elements. To reverse this, long-tap on it and select Unpin.
Set Depth
Each element has a particular depth which is unique to it. Deeper elements are obscured by shallower
elements which overlap them.
Orientation
The geometry (position and size) of each element can be configured independently for portrait and
landscape display orientations by rotating the device to the desired orientation in the editor.
If no geometry is configured for a particular orientation when the scene is displayed, Tasker will attempt
to fit the elements into the scene based on the geometry of the elements in the other orientation.
Parameter: Position
If both a Label and Icon are specified, the Position parameter refers to the position of the Label. The
Icon is then placed opposite the Label.
Events
Related Actions
Element Image
Element Text
Element Text Colour
Element Position
Element Focus
Element Size
Element Visibility
Element Depth
Test Element
See Also
About
Events
Change
Related Actions
Element Value
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
Doodles are stored on external storage in the directory /sdcard/Tasker/cache/doodles in case they
are masterpieces which demand publishing.
Events
Related Actions
Element Position
Element Size
Element Focus
Element Visibility
Element Depth
Test Element
See Also
Related Actions
Element Image
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
Shape elements are intended mostly for decoration but can also be used as invisible 'launchpads' for e.g.
stroke events.
Events
Related Actions
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
A Map element is a view onto the same kind of map window used by Google Maps but is much more
automateable than the standalone app.
When shown with the display type Dialog, Dim Behind or Dialog, Dim Behind Heavy the map will also
be dimmed starting with Tasker 4.5, an unfortunate side-effect of the dimming method.
Related Actions
Element Visibility
Element Depth
Test Element
Events
See Also
A menu displays a variable selection of items and can have a separate action, text and icon defined for
each item in the list.
Parameter: Source
Items can either be filled manually or from a variable array. In the case of an array, the list shows all the
items starting at the first index; %var(1) %var(2) etc.
In the case of manual specification, click on the Items tab in the element editor to specify the items.
Selected items are highlighted. There are two ways to find out the selected items:
assign a task under the Item Tap element event tab. Every time an item is tapped, the selected
items are available in the local variable %select_indices
query the selected items at any time using the action Element Get Value
Specifies how each item within the list will be displayed. Each item has exactly the same layout. To
change the layout, click on it. Each Menu element has it's own unique item layout.
There are two pre-defined layouts you can choose from (click the magnifying glass icon). 'Icon and Text'
is the default.
Events
Related Actions
Menu
allows easy display of a dialog with a title and showing a single menu element.
When using the Menu action, items are configured in the action itself rather than in the Menu
element.
Element Position
Element Size
Element Visibility
Element Depth
Test Element
Allows selection of a numeric value from a specified range. Above and below the selected number the
element can be long-clicked to advance the number series, or the number can be scrolled or flung up or
down by touch.
Events
Value Selected
Note that the Value Selected event will only fire when scrolling has finished i.e. when the user has lifted
their finger and the Number Picker has come to rest.
In contrast, long-clicking will produce an event for each number that is cycled through.
Related Actions
Element Value
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
A standard Android 'seek bar' enhanced to allow specification of the thumb icon and display indicators
for the min, max and current values.
Events
Value Selected
Related Actions
Element Value
Element Focus
Element Image
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
A spinner allows selection of a single item from a menu. Only the currently selected item is displayed.
When tapped, the menu is shown, when an item is selected, the menu is hidden again.
Parameter: Source
Items can either be filled manually or from a variable array. In the case of an array, the list shows all the
items starting at the first index; %var(1) %var(2) etc.
In the case of manual specification, click on the Items tab in the element editor to specify the items. The
default (initially showing item) is selectable via the checkboxes on the left.
Note that by default, a spinner is text only. To show also icons, long-click the icon element in the Item
Layout (see below) and select Show.
Specifies how each item within the list will be displayed. Each item has exactly the same layout. To
change the layout, click on it. Each Spinner element has it's own unique item layout.
Specifies the background colour of the window which displays the possible spinner values when the
spinner is clicked.
Events
Item Select
Related Actions
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Element Value
Test Element
Parameter: Position
A horizontal scaling factor to squash up (negative values) or stretch (positive values) the text.
Parameter: Font
Specifies a custom font file to use for the text instead of the system default. Many thousands of free font
files (with the filename ending in .ttf are available for download on the Internet.
What to do when the height of the text to display is greater than the height of the element.
Plain Text
just show the text as-is
Text With Links
things that look like links are clickable (though not in the scene editor) e.g. URLs, email addresses,
phone numbers
HTML
interpret the text as a piece of HTML. Only simple tags are interpreted and no images are
displayable.
Events
Related Actions
Element Text
Element Text Colour
Element Border
Element Back Colour
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
Parameter: Text
This is the initial text to show in the element, with any variables replaced.
Note that if Text contains a variable, any changes in the variable value once the element have been
shown will not be reflected in the visible contents of the text box. The reason for this limitation is that
the user can change the text box contents by typing at any time so it is not possible to track where the
variable contents should be, or even if they are still there at all.
Parameter: Position
Horizontal scaling factor to squash up (negative values) or stretch (positive values) the text.
Events
Related Actions
Element Text
Element Text Colour
Element Border
Element Back Colour
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
A button with two states with an indicator light and a label for each state.
Events
Change
Related Actions
Element Value
Element Focus
Element Position
Element Size
Element Visibility
Element Depth
Test Element
See Also
These parameters determine how the content for the WebView is to be acquired.
URI: the Source parameter refers to a URI (e.g. http://) from which the WebView should retrieve
content.
File: the Source parameter contains a local file path from which the WebView should retrieve
content.
Direct: the Source parameter directly specifies the HTML and/or JavaScript content to load
If checked, the content in the WebView is allowed access to local device files, data stores, and can run
JavaScript, including Tasker's JavaScript Interface functions.
This is a very powerful feature, since it allows a WebView to present a complex and highly functional
interface, but should only be enabled if you entirely trust the source of the specified content.
Note that references to local files must be absolute (include the directory) even when the WebView
source is specified as a file e.g. /sdcard/myfiles/scripts.js
If checked, links will be handled by the WebView itself, otherwise they will be passed to the system for
handling e.g. by the default web browser.
If this parameter is not checked, HTML elements which generate a popup window, for instance selection
elements in forms, will crash the scene when they are activated.
If this parameter is checked, when the scene is hidden and reshown, some of its state will be lost e.g.
which part of the page was being displayed, zoom level.
Events
Related Actions
See Also
UI
Items
Background
Event
Change
Focus
Tap, Long Tap
Item Select
Value Selected
Item Tap
Stroke
Text Changed
Link Tap
Page Loaded
Video
UI
For the most part, configures the visual style of the element.
Items
Each row configures an item in the menu/spinner. Starting from the left, the controls are:
selection checkbox
this is only present when Selection Mode is set to Single or Multi. It stipulates whether the item
will be shown as selected when the menu is displayed.
icon button
the icon to show for the item. If you don't want to show an icon, hide the icon element in the
Layout parameter in the UI tab
label text
the label to show for the item. If you don't want to show a label, hide the label element in the
Layout parameter in the UI tab
action button
an action to run when the item is tapped
To add an item, click the plus button at the bottom of the screen. Items can be rearranged and deleted by
click-and-dragging at the right hand side.
Background
Configures a rectangle shape to be used as the background for the element when it is displayed. The
background will be stretched to fit the size of the element.
If you want to use an image for a background, create a separate Image element and place it underneath.
Event Tabs
Event tabs stipulate what Tasker should do when the user interacts with the element in some way. When
the scene is showing, the event will also occur if an action (probably Element Value) sets the element.
Most events consist only of a task to specify but some allow a filter specification so that the task only
runs if the event matches the filter.
To help the task to decide what to do with the event and to allow a single task to handle many different
events if desired, Tasker sets certain local variables which give specific information about it. The
variables are easily accessible by clicking the usual variable tag icon in any action in the task.
%scene_name
Text Changed
Elements: TextEdit
This event is triggered whenever the text changes e.g. because a letter key has been pressed while the
element had focus.
%new_val
the new text
%old_val
the old text
Text entry is buffered so that it may be up to 1 or 2 seconds before new input is seen, and that input may
include several accumulated changes.
Change
%new_val
the new state of the element (on or off)
%old_val
the last state (on or off)
Focus
This event is triggered when the element gains or loses focus, probably because the user has tapped it or
another focusable element.
Elements: TextEdit
%focused
whether the element now has focus (true) or not (false)
%coord
the latitute,longitude of the tapped location on the map
%label
the label of the tapped GeoMarker (if any). You can add GeoMarkers to a Map element with the
action Scene / Element Add GeoMarker
Value Selected
%new_val
the new value of the element (e.g. 50)
%old_val
the last selected value (e.g. 43)
Elements: Menu
%select_indices
a comma-separated list of currently selected items in the list (e.g. 3,4)
%select_labels
a comma-separated list of the labels of currently selected items in the list (e.g. Blue,Yellow)
%tap_index
the index of the item that was tapped to cause this event (e.g. 3)
%tap_label
the label of the item that was tapped to cause this event (e.g. Blue)
Stroke
Direction
the direction from the start point of the stroke to the end point
Length
minimum distance in (approximate) pixels from the start point of the stroke to the end point
If either of these parameters don't match the event, the task will not run.
%stroke_dir
Direction, as described above
%stroke_len
Length, as described above
Item Select
Elements: Spinner
%tap_index
the index of the item that was selected
%tap_label
the label of the item that was selected
Link Tap
Elements: WebView
URL
the URL of the tapped link. If entered, the tapped URL must match the entry (e.g.
http://*.fruit.com) for the task to run
Stop Event
whether to stop the WebView following the link
%url
URL as described above
Page Loaded
Elements: WebView
%url
Video
Elements: Video
%event_subtype
the type of the video event, possible values being: Prepared, BufferStart, BufferEnd,
RenderStart, Lagging, Finished
Note that the Finished event will never occur if the Video element has the Loop parameter checked.
A commonly noticed symptom is that profiles with Time contexts don't activate or deactivate at the
expected time.
Make sure that Menu / Prefs / Monitor / General / Run In Foreground is checked.
In Menu / Prefs / Monitor / General / Use Reliable Alarms, make sure When Off or Always
is selected.
If Never is selected, Android may group alarms together so they go off too late. On some devices,
Android may even kill Tasker at times if Never is selected.
If you have reliability problems, Tasker might need to be whitelisted so that it is not battery-optimized by
Android.
The location of the setting may vary per device, but a common method is to launch the Android Settings
app, select Apps, click the cog icon top-right, then Battery optimization. Click All apps, then Tasker,
then Don't optimize.
On a rooted device, it may be possible to change the battery optimiation parameters depending on the
functionality you need from Tasker. An example app for this purpose is Naptime.
Some Samsung devices have a Smart Manager app. Launch the app, press the battery quarter of the
screen, under App optimisation press DETAIL where you can adjust the settings for each app. It's
advisable to disable this for Tasker if you are having reliablity problems.
MIUI 7
Launch Settings app, select Additional settings -> Battery & performance -> Manage apps battery usage
-> OFF
App Creation
Introduction
Hello World Example
App Configuration
Signing
Target Device Requirements
Miscellaneous
FAQ (External Link)
Introduction
Tasker allows creation of completely standalone apps (APK files) which have no requirement for Tasker
to be installed on the device they're used on.
The intention is to allow people to create their own apps for fun, for sale or just to share with friends. Or
if you are concerned about all the permissions Tasker needs you can create an app that has only the
permissions you require!
App creation is uncomplicated and takes only a few seconds once you're setup.
To create apps, you need the following on your device (not necessarily on the device(s) the app will run
on):
Android 2.3+
Tasker App Factory (free, see below)
a device with an ARM or x86 processor (the vast majority of devices have one of those)
App creation is accessed by long-clicking on a project (not the base project) or task and selecting
Export then As App. Any linked resources needed (e.g. other tasks, images) are included as part of the
new app.
To export anything except a single task, you need to create a project and put anything you wish to export
in the project.
Let's make a simple app that just pops up Hello World! when it's launched. This example assumes that
you are in Beginner Mode, please make sure that Menu / Prefs / UI / Beginner Mode is checked
before you start.
1. Create A Task
To generate apps, Tasker needs a free helper app called Tasker App Factory. It's available on Play Store
and from the Tasker website.
Click the accept button on the popup to install the helper app.
3. App Generation
Tasker should now start generating your app, which will take maybe 12 seconds depending on your
device.
If all goes well, the Cancel button will turn into an OK button meaning your app is ready!
We can't run the app straight away though because it hasn't been installed. Click on the rightmost bottom
button with the Android icon to ask Android to install your app.
Once Android is done installing, you can click it's Open button to run the app, or you can simply go to
the home screen and click on the app's icon in the launcher.
App Configuration
When in Beginner Mode, and if you only have one task to install, Tasker will make guesses about how to
configure the resulting app.
More usually, before an app is generated you will be presented with a configuration screen which lets
you specify various options for the new app.
App Signing
Android requires that all apps be signed i.e. that they certify who created them. By default, Tasker uses
an automatically-generated insecure certificate to sign apps and doesn't bother mentioning it.
However, if you want to release an app via a public site (Play Store for example), you will need to sign it
with a proper (secure) certificate. That's done so the site knows that it's you that's giving them the app
each time you submit a new version.
Certificates are kept in a keystore which is protected with a password. To generate a keystore with a
secure certificate, use Menu / More / Developer Options / Create Certificate.
Once you've generated the keystore, Tasker will often need to ask you for the certificate password
before app generation so that it can be used to sign each new version of your app.
If Android's backup service is enabled in Android settings, Tasker makes a backup of the keystore there.
when it is first created and when you backup your profile data with Menu / Data / Backup. It's highly
advisable to make a copy of that file and keep it safe away from your device.
The device the child app is used on must meet the following requirements:
Miscellaneous
Accessibility Service
Android accessibility support changed in Android 4.1 (JellyBean). If support is needed for accessibility
services in 4.1+, the Minimum Android Version in the child Configuration screen must be set to 16 or
higher. If support is required pre-4.1, it must be set to less than 16.
In other words, to support both pre- and post-4.1 devices, two APKs must be generated.
This applies to all features that rely on an Accessibility Service (events Notification, New Window,
Button Widget Clicked, Notification Click, variables %NTITLE, %WIN, App Context from min version
20+)
Google Play Store allows publication of APKs targetting different Android versions under the same
package name, however this has not been tested by the developer of Tasker.
Launch Task
When the specified launch task runs in the child app, the following local variables will be available to it:
%launch_data: the data (URI) in the intent that caused the child app to launch (often empty)
Monitor Service
Most child apps include a service which constantly monitors for events. If you know that you don't need
to monitor events anymore (in-between app launches) you can use the Disable action in the Tasker
category to stop it.
Widgets / Shortcuts
Memory Problems
If you are having low memory problems during app generation, you can ask the App Factory to use
external storage for the generation process. See Menu / Prefs / More / Factory.
Preferences
The new app does not take over any preferences from Tasker, all of the preferences in the child app are
in their default state, with a couples of exceptions.
Despite the misleading name, you can use the Set Tasker Pref action in the Tasker category in the child
app to change some of the child's preferences when it is running.
Obviously, the device the new app runs on may not have the same set of available e.g. actions as the
device the app is created on.
The Test action in the Misc category allows you to check which Tasker features are available at run time
(when the app is being used).
Images
Referenced images (even scene doodles and photos from internal storage) are bundled in with the app.
Tip: to include a dynamic image (e.g. which you download to a file path via HTTP Get), put the image
reference in a variable, and put the variable in the relevant action.
Plugins
When the new app is launched, it checks that all referenced plugins are installed on the device and
prompts the user to install missing ones.
Some plugins may not work on other devices if they themselves store something about the action to be
performed, since that data will not be available on the other device.
JavaScript actions
Scripts referenced by a JavaScript action are packaged with the new app and run directly from there.
SL4A Scripts
Scripts referenced in a Run Script action are packaged with the new app and unpacked to /sdcard
/sl4a/scripts, prefixed with the package name, on first run. Tasker automatically inserts the
WRITE_EXTERNAL_STORAGE permission for that purpose.
If SL4A is missing on the target device, the new app will prompt the user to download when launched.
If a new version of the app is reinstalled on the target device, the new versions of the scripts will be
written if the length has changed.
The following external components are also checked for on launch of the new app where necessary:
Maps
The data for Maps is provided by Google and they require a maps key (v2) for each developer that uses
it. If you are using Map scene elements in your app, you need a key from Google that can be included
with your app.
Enter the key in the App Configuration screen when generating your app. Note that the box will only be
presented if your app uses one or more Map scene elements.
Note that the device on which the created app is used needs Google's Play Services APK installed,
otherwise the map elements will not function.
Variables
The new app is completely independent of Tasker, so it also does not share any variable values.
Permissions
Tasker attempts to reduce the set of permissions required by the new app to the smallest set required for
the functionality it contains. For example, no Vibrate permission will be requested if there is no vibrate
action used.
App Size
Generated apps are minimally around 640K but are unlikely to be significantly larger unless a lot of
images are referenced. It's possible that this minimum can be reduced in the future.
Encryption
Code for encryption is included in any app created by App Factory, however if you don't use encryption
features it's unlikely to be a problem in terms of export restrictions. However, that is an opinion, it is not
legal advice.
Note that code libraries for encryption are included with every Android device. Tasker (and child apps)
use these libraries to perform the encryption, they do not contain encryption code themselves.
Licence
You are free to distribute and sell apps created by Tasker in any way you wish. No licence fees to the
developer of Tasker are necessary. It would be courteous to reference Tasker and it's website
(http://tasker.dinglisch.net) somewhere in your new app if possible.
Please note that use of images from some Ipacks in commercial software is prohibited by the licence
terms of the image creators. You will need to contact the image designer to request their assent in such
cases. (the origin of an Ipack's images is displayed in the Ipack image selection screen).
These consist of an icon (the Task icon) with a label (the Task name) underneath, and look identical to
the normal application icons in the home screen.
This type consists of an icon and label, like the standard widgets, but also has a countdown timer display
which counts down Days, Hours, Minutes and Seconds.
Tapping on the icon of the widget shows a configuration screen where the timer can be configured.
Tapping on the timer section of the widget will pause, restart or reset the timer, depending on its current
state.
Note that the timer updates more rarely when it is still a long way from expiry in order to minimize
power usage.
See Also:
1. Click and hold in an empty space on the Android home screen, until a dialog appears.
2. Select Widgets or Shortcuts
3. Select Task or Task Timer (Widgets only)
4. Pick an existing task or create a new one. When creating a new one, if you do not expect to
change the function of the widget/shortcut select One-Time to avoid it cluttering your list of tasks.
5. Use the Configuration Screen to configure what should happen when the icon is clicked (or the
timer expires, in the case of a Task Timer widget). Take care to select an appropriate name and
icon for the task, as these will appear on the home screen.
The function of widgets or shortcuts created from one-time tasks cannot be changed, it must be deleted
and recreated.
On the other hand, if you associate a normal named task with a widget or shortcut then when the task is
changed (via the Task Edit screen) the function of the widget or shortcut also changes.
There are also some actions which will change the appearance of any widget:
Tasker/Change Icon Set: changes the icon of a set of widgets to a different style.
Tasker/Set Widget Icon: changes the icon of a particular widget
Tasker/Set Widget Label: changes the label of a particular widget
The latter two you could use to visually show the status of something e.g. WiFi.
Click and hold on the icon in the Android home screen until the dustbin icon appears. Drag the widget or
shortcut icon to the dustbin icon and release.
Advantages of Shortcuts
they can be created in some places that widgets can't e.g. in home screen folders
their layout probably better matches the default launcher layout
long shortcut labels will scroll when selected in the default launcher
Advantages of Widgets
their icon and label can be dynamically changed after creation via the Set Widget Icon and Set
Widget Label actions.
timer widgets are possible
they can be created without a label
So a shortcut should be used unless the extra configuration possibilities of a widget are necessary.
General
you can create as many Tasker widgets and shortcuts as you like. You can even have several
Timer widgets running at the same time.
Timer Task widgets continue to update even when the screen is off.
Beginner Mode
When Tasker first starts, Beginner Mode is enabled.
In Beginner Mode, Tasker attempts to simplify things for inexperienced users, mostly by UI elements
In the userguide, when references are found to things which do not appear on the screen. It's worth
disabling Beginner Mode to see if that's the problem.
CPU Control
Note: CPU control can damage your hardware e.g. by the CPU overheating. As for all Tasker functions,
you use it at your own risk!
General
On a rooted device (only) Tasker is able to control the CPU frequency of an Android device to some
extent. This is usually done either to save battery or make the device more responsive depending on the
circumstances.
The relevant control action is CPU in the Misc category. You can monitor the current state with the
variables %CPUFREQ and %CPUGOV.
There are two aspects which can be controlled, the Frequency Range and the CPU Governor. You will
need to experiment with combinations of these to achieve the best results.
Frequency Range
You can set the minimum and maximum frequency which the CPU is allowed to run at. Only certain
frequencies are valid, depending on the CPU (click on the magnifying glass button to select a valid
value).
The maximum frequency is probably initially set lower than the maximum frequency that the CPU can
actually handle. If that is the case, you should be very cautious about setting it higher. Tasker will warn
you the first time you try to do configure an action to do that, assuming you have not been using other
apps to change the maximum frequency limit.
CPU Governor
The active governor decides what the CPU frequency should be set to at a particular time, within the
frequency range you have set. Each has it's own unique strategy. Here are the most common governors:
Performance
keeps the CPU frequency always at the maximum. Most power-hungry, most responsive.
Powersave
keeps the CPU frequency always at the minimum. Least power-hungry, least responsive.
Ondemand
when the CPU is needed, immediately sets it to maximum frequency. Slowly reduces the
frequency back down to the minimum as time passes. Responsive, reasonable power usage.
Interactive
like Ondemand, but more responsive with slightly more battery usage.
Conservative
when the CPU load is needed, slowly increases the frequency to maximum. When the CPU is no
longer needed, immediately drops back to the minimum. Less power-usage than Ondemand or
Interactive, less responsive.
Not all governors are available on all ROM versions. Your device may also have a governor not
described here. You can still set that governor with Tasker.
Please read about Task Widgets / Shortcuts before venturing further on this screen.
The layout of the Configuration screen is nearly identical to that of the Task Edit screen.
When creating a Task Timer widget, you'll find a different button in the bottom right which allows
initialization of the timer. You can use this, or wait till the widget is created and then click on the icon to
configure the timer.
Flow Control
Overview
variable values
conditions on individual actions
If / Else / Endif actions for conditional grouping of following actions
For / End For to do a set of actions once for each of a set of elements
Goto action (jumping around within a task).
Perform Task action (calling other tasks as subroutines)
Stop action (terminate task immediately)
On the Wiki there is a detailed example of processing a file's content [External Link].
Tip: if you accidentally create a task that never ends when experimenting with loops, use the Kill button
in the Task Edit screen to end it manually.
Conditions
Every action can have a condition associated with it (specify this in the Action Edit screen). If the
condition does not match, the action will be skipped.
A condition consists of an operator ('equals' etc) and two parameters. The possible operators are:
Equals (eq)
The left parameter is identical to the right parameter.
Doesn't Equal (neq)
The left parameter is not identical to the right parameter.
Matches (~)
The right parameter is a pattern which the left parameter is matched against.
Not Matches (!~)
As above, but the match must fail for the action to be executed.
Matches Regex (~R)
The right parameter is a regular expression which the left parameter is matched against.
Doesn't Match Regex (!~R)
As above, but the match must fail for the action to be executed.
Maths: Less Than (<)
Both parameters (after variables are substitued) must be numbers or mathematical expressions and
the first must be less than the second e.g. 3 < 6. See Maths for more info.
Maths: Greater Than (>)
As above, but the first parameter must evaluate to more than the second.
Maths: Equals (=)
As above, but the two parameters must be numerically equal.
Maths: Isn't Equal To (!=)
As above, but the two parameters must be not numerically equal.
Maths: Is Even (Even)
The left parameter is an even number.
Maths: Is Odd (Odd)
The left parameter is an odd number.
Is/Isn't Set (Set/!Set)
Whether the specified variable has a value or not.
Expressions which are not mathematically valid e.g. I Am The Walrus > 5 give a warning and evaluate to
false when used with a mathematical operator.
Foreach Loop
Goal: perform a set of actions for each of apple, pear and banana.
Result: Action One and Action Two are performed three times. The first time, the variable %item is set
to apple, the second time pear and the last time banana.
You can insert a Goto action in the loop with either Top of Loop (meaning continue, skip to the next item
straight away) or End of Loop (meaning break, stop without doing any more items) specified.
In adition to simple text, the For action accepts any comma-separated combination of these Items:
A common case is to use %arr(), which performs a loop for each element in the array %arr.
Warning: the Values parameter in the loop is reevaluated with each iteration of the loop, meaning that
modifying array variables which appear there from within the loop can have unexpected effects. To
workaround that, it can be best to use the following sequence:
Variables Set, %values, %arrayWhichWillChange()
Variable Split, %values
For, %value, %values()
...
For Loop
Use the Foreach Loop as described above, with the Items parameter being a range specification e.g. 4:0,
100, 0:8:2 (= 4,3,2,1,0,100,0,2,4,6,8).
Until Loop
Goal: perform a Task X until some condition is met (at least once)
Result: Action One and Action Two are performed until %QTIME contains the value 20 or more i.e.
until the task has been running for 20 seconds.
While Loop
Result: Action One and Action Two are performed while %fruit contains the value Apple.
Counter Loop
Result: after initialization of %count to 0, the task loops around the actions from 2-5 until %count
reaches 10, at which point the condition on the Goto fails and the end of the task is reached.
Note that we used a Goto to a labelled action this time. In all but the very simplest tasks it's better to use
a label rather than a number. It's easier to work out what's happening and if you insert or delete actions
before the loop starts, the Goto will still jump to the right place.
Goal: perform certain Tasks if conditions are met, otherwise perform a different task.
Result: actions One and Two are executed if %fruit matches Apple, Action Three is executed if %fruit
matches Pear, otherwise Action Four is executed.
Notes:
Subroutines
To call another task, use the Perform Task action. To use it as a subroutine, you just need to ensure that
the priority of the calling task is less than the priority of the called task (more info: scheduling).
The parent can optionally pass values to the child and receive a result back:
Parent Task
Child Task
Notes:
changes made to %par1 and %par2 in the child task are not reflected by their changing in the
parent task
receiving a return value is optional for the parent, even if the child tries to give it one
unlike Return statements in most computer languages, Tasker's does not necessarily stop the child
task, so if the child and parent have the same priority they can both run together and the child
return several results over time.
Encryption
Note: encryption functions are not available to new customers or in Play Store versions of Tasker due to
US export restrictions.
Tasker has the ability to encrypt and decrypt files. The relevant actions are in the Encryption action
category.
Since decryption can be automated, you have the possibility to keep data files encrypted outside of
certain times, locations, applications etc.
Warning: make backups of your files while setting up encryption until you understand how the system
works and are sure the encryption/decryption process does not cause any corruption.
Tip: Tasker does not give progress reports while it's doing encryption, if you want to know when an long
decryption operation is finished, just put a Vibrate action or similar after the Encrypt/Decrypt action.
Keys
Tasker uses a system of named keys. All of the encryption actions can specify a key name so that you
can use different keys with different files (if desired).
Once a passphrase for a key is entered, the ciphers it generated are stored in memory until explicitly
deleted. The deletion might be specified after an Encrypt/ Decrypt File action, or explicitly with the
Clear Key action.
Setting Up Encryption
General Preferences
First thing to do is check whether the encryption preferences for Encryption Iterations and Encryption
Algorithm are as you wish. Once you start encryping things, it's time consuming to start again with new
encryption preferences.
The preferences can be found at Menu / Prefs / Action. Be sure to have a look at the help text for
each item.
Initial Encryption
To start with, you probably want to encrypt some files which are in a particular directory, which you can
then decrypt as they are needed.
To do that, create a task called Encrypt or similar and add one or more Encrypt File or Encrypt Dir
actions to it.
By default, the key is cleared once the file is encrypted, so click 'Leave Key' for all but the last action,
otherwise you'll have to enter your passphrase for each file.
Next, create a Tasker shortcut on the home screen, using the Encrypt task. Tap the widget to encrypt
your files. Notice how you are only asked for the passphrase for the first one, because it is stored until
cleared.
The encrypted files will all receive an extension .tec and the original files are deleted.
Decryption
Once you have a set of encrypted files, you need to setup the contexts in which they will be decrypted.
Create another task called Decrypt or similar, and add Decrypt actions to it to match the encrypt actions
you setup previously.
Don't click Clear Key, otherwise you'll have to enter your passphrase for every file (and at the start of
encryption).
Now you can use your Encrypt and Decrypt tasks whenever you like. For instance, you could create a
profile with a Location Context and run your Decrypt task when entering the location (assign Decrypt as
the Enter task) and your Encrypt task when leaving the location (assign Encrypt as the Exit task).
Important: when you use the Decrypt action, it recreates the original file from the encrypted copy, but
does not delete the encrypted version.
When you re-encrypt the file, if it has not changed it is simply deleted since we already have an
encrypted copy. If it has changed, it is re-encrypted.
It's not always convenient to enter the key at the point at which de- or encryption takes place. This
action allows you to specify the passphrase for a key at a different point.
If you don't wish to double-enter a key when encrypting, you can also use this action before an Encrypt
action and not select Confirm.
To allow full-automation of en/decryption, the passphrase for a key can also be set without user
interaction. However, this is much less secure tham Enter Key because:
the passphrase (as part of the action) is stored in clear text in device memory and could be read
by the root user if the device OS is compromised
although the passphrase is itself encrypted when a backup is made to SD, the parameters for that
encryption can be recovered from the java code in the Tasker apk file
Security
Algorithm
Tasker uses symmetric encryption, meaning the same passphrase is used both to encrypt and decrypt the
data.
A salt is combined with the passphrase several hundreds of times using the MD5 algorithm to produce a
key which is used for the 128-bit (default setting) AES algorithm.
The number of iterations and algorithm can be set in Menu / Prefs / Action.
Pass Phrases
The longer the passphrase, the more secure the data. Minimally 8 characters of mixed alphabetic,
numeric and punctuation characters is recommended.
Clearing Keys
While a key's ciphers are in memory, anyone can use the key for decryption or encryption if your device
is lost or stolen, so it may be wise to setup a Clear Key action e.g. when the device is turned off (see
Screen Off in the Event Context) or at a particular time (Time Context), depending on what you are
using the encryption for.
Manually Encrypting/Decrypting
You can use Tasker's file browser (action Browse Files) to encrypt/decrypt files directly, via a long-click
on the file.
Gestures are physical movements of the phone in space, which you first record by creating a new Event
of type Gesture (in the Misc category).
When you later redo the gesture while using your device, Tasker will carry out the corresponding task(s)
you have attached to its profile.
Like normal events, gestures are restricted by other contexts. For example, if you define a profile with a
Gesture (Event) and Application context, the gesture will only be recognized while using that particular
application.
Note: it might be a good idea to disable Tasker before setting up new gestures, as otherwise you are
likely to trigger previously defined ones.
Recording A Gesture
Gesture Points
First off, it's important to know that Tasker only records the particular points (which we'll call inflection
points) of a gesture that you tell it to. For example, recording a gesture involving tilting the phone to the
left and back you would record three inflection points: the start, the tilted left position, and the end
(which is the same as the start in this case).
You can record as many points as you like, but in general it's best to record only the points where the
phone is not moving.
Recognized Movements
Tasker will only recognize changes in the angle of the phone i.e. tilting to left or right, backwards or
forwards, or rotating vertically. Imagine three poles going through the device in the three dimensions.
Moving the phone backwards or forwards, up or down or side to side cannot be recognized.
Procedure
1. create a new Gesture Event and give it a name (so you can differentiate between different
gestures).
2. put the phone in the position where you want the gesture to start and press-and-hold the Call,
Camera, Menu, Search or Volume hardware buttons to record the point. The device will buzz.
3. move to another (preferably not-moving) point on the path of your gesture, and press the button
again (not a long press). The device will buzz.
4. on the final inflection point, press-and-hold the button to mark the end of the gesture. The device
will buzz again and the "Recorded." message should now flash up.
5. Press Done, and add a Vibrate action so you can hear when your pattern matches when testing it.
Activation
Calibration
Before trying to match a pattern, you probably need to calibrate the hardware in your device. Go to
Menu / Prefs / Monitor / Gestures. Press the Calibrate button and tilt your phone around in all
directions.
Tasker now has some idea what kind of values the accelerometer in your phone produces.
Matching
Now exit Tasker and move your device through the points you previously defined when recording. You
should hear the device vibrate when it reaches the final recorded point.
If not, try playing with the values in the Gesture Settings screen. For instance, you could try raising the
Match Radius (but be careful not to raise it too much or you'll get a lot of matches by mistake).
Power Usage
monitoring for gestures only takes place when all the other contexts in a profile are already active
(and so the gesture might have a chance of activating the profile). For example, if you combine an
Application and Gesture (Event) context, gesture monitoring will only take place while using that
particular application.
Gesture monitoring is by default turned off when the display is off unless a power source is
connected to the device, unless specified otherwise in Menu / Prefs / Monitor / Display
Off Monitoring
updates from the accelerometer are at the minumum rate until the start of a gesture is detected.
Icons
Tasker can use four categories of icons: Application, Built-In, Ipack, User-Installed.
In some places it's also possible to use any image stored on local media as an icon.
Application Icons
Minor note: if the icon of the application changes, an update of previously created widgets/shortcuts can
be forced by creating a single widget with the new icon and then rebooting.
Built-In Icons
These come with Tasker and are kept in the device's memory.
Ipack is a free, open format for sharing of icon sets between Android applications. Ipack icon sets can be
either installed from Play Store or from the Ipack website.
When setting an icon, you will notice an item labelled Download More Icons. Clicking on it will use the
appropriate source depending on which version of Tasker you have.
User-Installed Icons
You can also install your own icons directly into Tasker's icon directory /sdcard/Tasker/.icn/. Make
sure the icons are in a subdirectory. The subdirectory should also only be one level deep (no
subsubdirectories).
Example: a two-icon set called Christmas would have the two files in these locations:
/sdcard/Tasker/.icn/Christmas/santa.png
/sdcard/Tasker/.icn/Christmas/snowman.png
Intents
Intents are Android's main method for allowing apps to communicate with each other and
share data. Intents are for advanced users. This document is not intended to explain how intents work,
but how to use Tasker's intent facilities.
Sending Intents
You can find information about intents and details of several built-in Android intents on the Android
SDK Reference Site.
Tasker allows you to send arbitraty intents using the Send Intent action in the Misc category. This allows
you to provoke behaviour in other apps, when you know the particular form of intent they are designed
to respond to.
Note that any parameter specified except Extras will reduce the set of possible receivers of the intent.
Action
What the sender would like the receiver to do with the data.
Example: android.intent.action.VIEW
Cat
Mime-Type
From the developer reference: "This is used to create intents that only specify a type and not data, for
example to indicate the type of data to return."
Data
Extras
The extras must be in the form of a single colon-separated key and value.
If the value can be parsed as an integer, long (integer ending in L), floating point number, double (float
ending in D) or boolean (true/false) it will be treated as one.
The value can also be forced to a simple type (long etc) or Uri via casting.
The name of a Java object created via the Java Function action which is of type Parcelable can also be
used (e.g. a Bundle)
Examples:
have_flowers:true
(boolean)
this.is.an.integer.example:34
(int)
this.is.a.double.example:34D
(int)
address: (Uri) http://a.b
(Uri)
bunchofvalues:mybundle (where mybundle is the name of a Java object of type Bundle)
(Parcelable)
simple.string.example:hello there!
(String)
Package, Class
Allow specification of a particular package and/or class within the package to restrict the broadcast to.
Target
Many intents that an app listens for are declared in its package manifest (called AndroidManifest.xml).
You can view details of those intents using the aapt tool that comes with the Android SDK like this:
aapt dump xmltree example.apk AndroidManifest.xml
It's not (easily) possible to determine which intents an app listens for dynamically (i.e. while the app is
running).
Receiving Intents
Tasker allows you to receive a large range of intents, sent by apps or the system, using the Intent
Received event in the System category.
For each event you create, Tasker sets up a corresponding Intent Filter object.
Limitations
Tasker can only receive intents which are sent to broadcast receiver components, not to activities
or services.
some intent senders require that a corresponding intent filter is specified statically (i.e. in an
Android Manifest). Those intents cannot be received.
intents which are broadcast with a specification of a particular package component to receive it
cannot be received.
Action
If specified, the received intent must have also that action specified.
Cat
Any categories specified in the received intent must also be specified in the Tasker event. Note that this
is logically different to the situation for the Action parameter.
Scheme
If any schemes are included in the filter, then an Intent's data must be either one of these schemes or a
matching data type. If no schemes are included, then an Intent will match only if it includes no data.
Mime Type
If a type is specified, then an Intent's data must be the same, or match the Scheme parameter. If no Mime
Type is specified, then an Intent will only match if it specifies no Data.
Priority
If the intent is part of an ordered broadcast, then the priority specified here will affect whether this
event will receive the intent before or after other listeners.
Stop Event
If the intent is part of an ordered broadcast, then specifying Stop Event will prevent it being passed to
other listeners after this one.
When an intent triggers an Intent Received event, the resulting task(s) which are executed have access
to many details of the intent via local variables (where relevant and present):
In addition, any extras attached to the intent can be accessed under their name, with the following
modifications to make them valid variable names:
For example, an extra with key %SOUND_ON will be available as %sound_on, and an extra with key
package.SOUND_ON!, will be available via the local variable %package_sound_on_a
The following extra types are presented in Tasker as local arrays: String [], Integer [],
ArrayList, ArrayList.
Example: a string array extra `named 'fruits' with values 'pear' and 'apple' will result in the local variables
%fruits1 (=pear) and %fruits2 (=apple).
Java Support
Introduction
The Java Function Action
Using The Action
Parameters
Return Values
Objects
Creating An Object
Object Naming, Local And Global
Built-in Objects
Assigning Values
Other Actions Supporting Objects
Other Topics
Casting
Constants
Generic Classes
Permissions
Service Thread
Static Fields
Introduction
Android has hundreds of thousands of functions which apps can use. It's not possible for Tasker to
present all of those to the user, so Tasker allows the advanced user to directly call those Java functions
and work with Java objects themselves.
It does not allow you to 'write Java code'... but the combination of Tasker's logic and flow control with
direct access to the Android API is sufficient for most automation purposes.
This page assumes you have a basic familiarity with the Java concepts of objects and classes.
Example
Action 2 demonstrates that Tasker variables can be used in Java function calls. wiman is a Java object
resulting from the function call which is stored by Tasker for use in subsequent actions. CONTEXT is
also such a variable but is built-in and always accessible to Java Function.
Action 3 demonstrates that results of Java Function can also be assigned to Tasker variables. Since all
Tasker variables are strings, some conversion needs to take place depending on what type of object the
Java function returns. In this case it's a boolean, and so %enabled will be true or false.
Action 4 demonstrates taking a decision based on the result of previous Java function call.
1. enter an object or class (to access static functions) into the first parameter.
The magnifying glass icon will show a class selector for classes known in the latest Android API.
Some may be coloured red, as not all classes are available on all devices.
The question mark icon will attempt to link to the relevant Android reference page for the object
or class.
2. click the magnifying class next to the Function parameter to select a function to execute
appropriate to the object or class from step 1.
In most cases, Tasker will be able to guess which class an object is, and hence which functions are
available, if not, see casting below.
Functions listed in red are private, meaning they can be used, but the author didn't intend them to
be.
3. if the function returns a value, you can enter a Java object name to assign it to, or a Tasker
variable, see below.
4. enter any parameters required for the function, see below. The type of object the function expects
for the parameter is displayed above the text entry field. The magnifying glass will list any fields
associated with the current entry in the text box, where possible.
Parameters
If you don't enter a value for a parameter, null will be used for that parameter when the function is
called.
If you enter the name of a variable array, Tasker will attempt to convert the array values into the type of
object (an array or collection) which the function expects.
Here can also be entered Java objects, or their fields, either built-in or created by previous calls to Java
Function (e.g. wiman or arr[0].length)
Return Values
When a Java function returns a value, it can be placed in either a Tasker variable or a Java object (or
ignored).
If it's placed into a Tasker variable, it's converted to a piece of text and the object itself is lost and can no
longer be accessed. Note that if the Java object is an array or list, it will be assigned to multiple Tasker
variables in the usual way e.g. %val1, %val2...
When the returned value is placed into a Java object, you can access the object at a later time in another
Java Function and some other (see later) actions.
Note that return value classes are inferred from the function, so object names can refer to different
classes at different times. It's not recommended to reuse names in this way however!
Objects
Creating An Object
New objects of most types can be created by filling in the class name, hitting the function selector and
selecting a function called new.
It's worth noting that many classes in the Android API have special static functions for getting a new
object of that class called e.g. getInstance or similar.
Arrays (also multidimensional) can be created by adding [] to the class name (or e.g. [][]).
Creating an array is also possible natively via the newInstance function in the the class Array.
Array components can be accessed as in normal Java (arr[0][1]) wherever Java objects are supported.
Object names can consist of any any combination of upper or lower case letters and underscore and,
unlike Tasker variable names, may start with underscore. The first letter may not be upper-case, as this is
a convention used to distinguish objects from classes.
Analogous to Tasker variables, Java objects are either local to the current task if their name is all lower
case, or global (available to any other task) if there are any upper-case characters in the name.
All-upper-case names represent final (fixed) global objects which cannot be modified.
There are three important things to remember about global Java objects:
it's important to delete them once they are no longer needed, because they can take up a lot of
memory.
unlike global Tasker variables, they are lost when Tasker is killed e.g. because the device was
restarted
their names can only contain upper- or lower-case letters or underscore.
Built-in Objects
Assigning Values
When writing Java code, to make a name refer to the same object as another name, you would use
something like:
String a = "hello";
String b = a;
To achieve that in Tasker, you use the special assignTo function after selecting the object to assign.
Java Function, a, "hello", assign (or a = "hello".assign())
Java Function, b, a, assign (or b = a.assign())
If
A Java object can be directly referenced in a condition. Null-value objects are replaced with text
representation null.
Examples:
If, arr[0][0] eq 45
If, arr[0].length > 3
If, lightlevel Equals null
For
The Value parameter in the For action can include Java object references as for If.
For, %value, arr
Will repeat once for each value in the array arr. This will also work for string lists and simple objects
(boolean etc)
Other Topics
Casting
Casting in Tasker is used only to tell Tasker the type of a particular object. That can be useful so that e.g.
Tasker can show functions which are appropriate to it.
In the example at the top of the page, the getSystemService function returns an Object:
Java Function, wiman = CONTEXT.getSystemService( %service )
Since the object could be one of many kinds of managers, Tasker is not able to list the WifiManager
functions for easy selection when creating the next Java Function action in the task.
You can tell Tasker the actual type by adding a cast in brackets before the name:
Java Function, (WifiManager) wiman = CONTEXT.getSystemService( %service )
Constants
Tasker will attempt to convert numbers without affixes to a Java type in the following order: int,
long, float, double.
Generic Classes
Create them by selecting their class in the class selector, clicking the function selector and clicking new.
Generic classes mixed with arrays cannot be handled by Tasker, though you can pass such objects
around from function to function.
Permissions
For some function calls, Android requires that the calling app have declared a permission otherwise the
call will fail. This means that a Java Function call will fail if the permission is not one of the ones
pre-declared by Tasker.
Unfortunately, Android does not allow permissions to be added dynamically, so if you wish to use a
function requiring a permission that Tasker does not already have, the only option is to generate a child
app to run the function (see App Creation). In the child configuration screen you can add any
permissions which your Java Function call needs to the child app.
Service Thread
things which require an activity will not work e.g. showing a dialog
sending intents will in some cases require the flag Intent.FLAG_FROM_BACKGROUND and possibly
also Intent.FLAG_ACTIVITY_NEW_TASK
Static Fields
JavaScript Support
Introduction
Local Variables
Global Variables
Arrays
Settings
Execution
Working Off-Device
Builtin Functions
alarmVol audioRecord audioRecordStop
btVoiceVol browseURL button
call callBlock callDivert callRevert callVol carMode clearKey composeEmail composeMMS
composeSMS convert createDir createScene cropImage
decryptDir decryptFile deleteDir deleteFile destroyScene displayAutoBright displayAutoRotate
displayTimeout dpad dtmfVol
elemBackColour elemBorder elemPosition elemText elemTextColour elemTextSize elemVisibility
enableProfile encryptDir encryptFile endCall enterKey exit
filterImage flash flashLong flipImage
getLocation getVoice global goHome
haptics hideScene
listFiles loadApp loadImage local lock
mediaControl mediaVol micMute mobileData musicBack musicPlay musicSkip musicStop
nightMode notificationVol
performTask popup profileActive pulse
readFile reboot resizeImage ringerVol rotateImage
saveImage say scanCard sendIntent sendSMS setAirplaneMode setAirplaneRadios setAlarm
setAutoSync setBT setBTID setClip setGlobal setKey setLocal settings setWallpaper setWifi shell
showScene shutdown silentMode sl4a soundEffects speakerphone statusBar stayOn stopLocation
systemLock systemVol
takeCall takePhoto taskRunning type
usbTether unzip
vibrate vibratePattern
Introduction
Tasker supports running JavaScript code in tasks or WebView scene elements. Most Tasker actions can
be accessed direct from the JavaScript. JSON and XMLHTTPRequest are also directly available from
the JavaScript code.
JavaScript in Tasks
JavaScript can be embedded inline in tasks via the JavaScriptlet (direct specification of JavaScript to
run) or JavaScript (load script from file) actions.
In both cases, the JavaScript executes in sequence with the other actions in the task and variables are
transparently converted so pieces of JavaScript can be interwoven throughout the task.
Embedded in HTML
WebView elements allow specification of mixed HTML and JS for the element content.
<H1 onClick="setWifi( false )">ClickMeToTurnOffWifi</H1>
Local Variables
In JavaScript(let) actions, local variables (all lower case, e.g. %myvar) are directly accessible in the
JavaScript without the % sign (e.g. myvar). If the script changes the value, the new value is
transparently used by subsequent actions in the task.
The values of new (all lower case) variables declared in JavaScript (with the var keyword) are also
available to subsequent actions, with the exception of those which are chain-declared e.g. var one =
'aval', two = 'bval';
In JavaScript embedded in HTML, the functions local and setLocal must be used to access variables
local to the scene hosting the WebView.
Global Variables
Tasker global variables need to be accessed via global() and set via setGlobal(). Global arrays are not
supported due to an Android limitation.
Arrays
Local Tasker arrays are transparently available in Javascript(let)s and vice-versa. They are not available
in WebViews.
Arrays which are not existing Tasker arrays must be declared in the JS as such i.e. in this case arr will
not be visible to the remainder of the task:
var arr = getSomeArray();
Note that:
Settings
Unlike normal Tasker actions, settings which are changed in JavaScript as part of a profile's enter task
are not restored when the profile exits.
Execution
Execution Instances
Only one script can execute at one time. Once a piece of JavaScript is executing, it cannot be interrupted
by another piece.
Working Off-Device
You might wish to develop long and/or complicated tasks off-device e.g. on a PC. There are two
strategies for that:
1. JavaScript action
For off-device testing, use Menu / More / Developer / Save JS Library Template to get dummy
definitions for the built in functions. Include that file when developing on your PC.
By using the JavaScript action rather than JavaScriptlet you can easily access a file synced from
PC to a file on the Android device.
2. Using WebView
If you specify a website URL as the content for your WebView, then testing the code on the target
device is a simple matter of pushing the new version to your webserver and reloading the WebView on
the device (see action Element Web Control)
Calls to most Tasker builtin functions (see below) are executed as normal single-action tasks and thus
may be blocked by other executing tasks.
They execute at the priority of the task that executed the JavaScript plus two.
JavaScript(let): Alert,Confirm,Prompt
Scripts using these functions require a 'user-interface' and may cause interference with the currently
running app (though in most cases they will not).
By default, the JavaScript(let) action will end when the main execution sequence is finished.
If you are using asynchronous code e.g. via setTimeout() or other callbacks, you should deselect Auto
Exit. You are then responsible yourself for telling Tasker to continue the task by calling exit().
In any case, execution will stop when the timeout configured for the action is reached.
JavaScript(let): Libraries
You can specify as many libraries as you want in the Libraries parameter, separated by newlines.
You may wish to download them manually to your local storage and change the http URL to a file URL
so that Internet is not required to run your script.
Warning: library code will have access to local files, data providers etc. on the device
Important: if you are using your own libraries developed on Windows, you may need to convert CRLF
style line endings to Unix style LF.
Builtin Functions
Tasker makes most of it's actions available via functions which can be called directly via name in
JavaScript(let) actions and WebView elements.
Exceptions:
in WebView content where mode is set to URL, the functions must be prefixed by tk e.g.
tk.flash('Woo!')
when executing code via eval the functions must be prefixed by tk.
audioRecord
var ok = audioRecord( str destPath, str source, str codec, str format )
destPath: where to put the recording. Note that a file extension is not necessary, it will correspond
to the selected format.
source: def, mic, call, callout or callin
codec: amrn, amrw or aac
format: mp4, 3gpp, amrn or amrw
The JavaScript does not wait for the audio recording to complete.
audioRecordStop
var ok = audioRecordStop()
browseURL
button
name must be one of back, call, camera, endcall, menu, volup, voldown or search.
call
If autoDial is false, the phone app will be brought up with the number pre-inserted, if true the number
will also be dialed.
callBlock
callDivert
callRevert
Stop blocking or diverting outgoing calls previously specified with callBlock or callDivert.
carMode
clearKey
composeEmail
The JavaScript does not wait for the email to be sent before continuing.
composeMMS
var ok = composeMMS( str to, str subject, str message, str attachmentPath )
The JavaScript does not wait for the MMS to be sent before continuing.
composeSMS
The JavaScript does not wait for the SMS to be sent before continuing.
convert
createDir
Create the named dirPath. If createParent is specified and any parent directory does not exist, it will
also be created.
If useRoot is specified, the operation will be performed as the root user (where available).
createScene
cropImage
decryptDir
decryptFile
Decrypt the specified file using the encryption parameters specified in Menu / Prefs / Action.
If removeKey is not set, the entered passphrase will be reapplied automatically to the next
encryption/decryption operation with the specified keyName.
deleteDir
Delete the named dirPath. recurse must be specified if the directory is not empty.
If useRoot is specified, the operation will be performed as the root user (where available).
deleteFile
If useRoot is specified, the operation will be performed as the root user (where available).
destroyScene
displayAutoBright
Whether the display brightness should automatically adjust to the ambient light or not.
displayAutoRotate
Whether the display orientation should change based on the physical orientation of the device.
displayTimeout
How long the period of no-activity should be before the display is turned off.
dpad
enableProfile
encryptDir
var ok = encryptDir( str path, str keyName, bool rememberKey, bool shredOriginal )
elemBackColour
var ok = elemBackColour( str scene, str element, str startColour, str endColour )
elemBorder
var ok = elemBorder( str scene, str element, int width, str colour )
Set the border colour and width of the specified scene element.
elemPosition
var ok = elemPosition( str scene, str element, str orientation, int x, int y, int
animMS )
orientation must be one of port or land. animMS indicates the duration of the corresponding animation
in MS. A zero-value indicates no animation.
elemText
var ok = elemText( str scene, str element, str position, str text )
pos must be one of repl (replace existing text completely), start (insert before existing text) or end
(append after existing text).
elemTextColour
elemTextSize
elemVisibility
endCall
var ok = endCall()
encryptFile
var ok = encryptFile( str path, str keyName, bool rememberKey, bool shredOriginal )
Encrypt the specified file using the encryption parameters specified in Menu / Prefs / Action.
If rememberKey is set, the entered passphrase will be reapplied automatically to the next
encryption/decryption operation with the specified keyName.
If shredOriginal is specified, the original file will be overwritten several times with random bits if
encryption is successful.
enterKey
var ok = enterKey( str title, str keyName, bool showOverKeyguard, bool confirm, str
background, str layout, int timeoutSecs )
Show a dialog to enter the passphrase for the specified keyName. The JavaScript waits until the dialog
has been dismissed or the timeout reached.
filterImage
Filter an image previously loaded into Tasker's image buffer via loadImage()
flipImage
Flip an image previously loaded into Tasker's image buffer via loadImage()
exit
exit()
flash
flashLong
getLocation
If keepTracking is set, the specified source(s) will be left tracking with the purpose of providing a much
quicker fix next time the function is called.
Fix coordinates are stored in the global Tasker variables %LOC (GPS) and/or %LOCN (Net). The
value can be retrieved with the global function. Several other parameters of the fix are also available, see
Variables.
Example
getVoice
result is 'undefined' if the voice acquisition failed, otherwise it's an array of possible matching texts.
prompt is a label for the dialog that is shown during voice acquisition.
languageMode gives the speech recognition engine a clue as to the context of the speech. It must be one
of web for 'web search' or free for 'free-form'.
goHome
Go to the Android home screen. screenNum is not supported by all home screens.
haptics
hideScene
global
Retrieve the value of a Tasker global variable. Prefixing the name with % is optional.
Example:
listFiles
If hiddenToo is specified, files starting with period are included, otherwise they are not.
Example:
var files = listFiles( '/sdcard' );
var arr = files.split( '\n' );
flash( 'Found ' + arr.length + ' files' );
loadApp
Name can be a package name or app label, it's tested first against known package names. Note: app label
could be localized to another language if the script is used in an exported app.
When excludeFromRecents is true, the app will not appear in the home screen 'recent applications' list.
loadImage
lock
var ok = lock( str title, str code, bool allowCancel, bool rememberCode, bool
Show a lock screen, preventing user interaction with the covered part of the screen. The JavaScript waits
until the code has been entered or the lock cancelled (see below).
local
Retrieve the value of a Tasker scene-local variable. The name should not be prefixed with %.
This function is only for use by JavaScript embedded in HTML and accessed via a WebView scene
element.
mediaControl
micMute
mobileData
musicBack
Skip back by seconds during playback of a music file previously started by musicPlay.
musicPlay
var ok = musicPlay( str path, int offsetSecs, bool loop, str stream )
The last 3 arguments may be ommitted, in which case they default to 0, false and media respectively.
musicSkip
Skip forwards by seconds during playback of a music file previously started by musicPlay.
musicStop
var ok = musicStop()
nightMode
popup
var ok = popup( str title, str text, bool showOverKeyguard, str background, str
layout, int timeoutSecs )
Show a popup dialog. The JavaScript waits until the popup has been dismissed or the timeout reached.
performTask
var ok = performTask( str taskName, int priority, str parameterOne, str parameterTwo
)
Note that the JavaScript does not wait for the task to complete.
profileActive
Whether the named Tasker profile is currently active. Returns false if the profile name is unknown.
pulse
readFile
reboot
type is one of normal, recovery or bootloader. It can be ommitted and defaults to normal.
resizeImage
Scale the current image in Tasker's image buffer to the specified dimensions.
rotateImage
dir must be one of left or right. degrees must be one of 45, 90, 135 or 180.
saveImage
Save the current image in Tasker's image buffer to the specified file path.
say
var ok = say( str text, str engine, str voice, str stream, int pitch, int speed )
engine: the speech engine e.g. com.svox.classic Defaults to the system default (specify undefined
for that)
voice: the voice to use (must be supported by engine). Defaults to the current system language
(specify undefined for that)
stream: to which audio stream the speech should be made
pitch: 1-10
speed: 1-10
sendIntent
var ok = sendIntent( str action, str targetComp, str package, str class, str
category, str data, str mimeType, str[] extras );
targetComp: the type of application component to target, one of receiver, activity or service.
Defaults to receiver.
package: the application package to limt the intent to
class: the application class to limit the intent to
category: one of none, alt, browsable, cardock, deskdock, home, info, launcher, preference,
selectedalt, tab or test, defaults to none
extras: extra data to pass, in the format key:value. May be undefined. Maximum length 2.
sendSMS
Send an SMS.
setAirplaneMode
setAirplaneRadios
Specify the radios which will be disabled when the device enters Airplane Mode.
disableRadios is a comma-separated list with radio names from the following set: cell, nfc, wifi, wimax,
bt.
setAlarm
var ok = setAlarm( int hour, int min, str message, bool confirmFlag )
confirmFlag specifies whether the app should confirm that the alarm has been set.
message is optional.
setAutoSync
scanCard
Force the system to scan the external storage card for new/deleted media.
setBT
setBTID
setGlobal
Set the value of a Tasker global user variable. Prefixing varName with % is optional.
setKey
setLocal
Set the value of a Tasker scene-local user variable. Variable names should not be prefixed with %.
This function is only for use by JavaScript embedded in HTML and accessed via a WebView scene
element.
setClip
settings
screenName must be one of all, accessibility, addacount, airplanemode, apn, app, batteryinfo,
appmanage bluetooth, date, deviceinfo, dictionary, display, inputmethod, internalstorage, locale,
location, memorycard, networkoperator, powerusage, privacy, quicklaunch, security, mobiledata,
search, sound, sync, wifi, wifiip or wireless.
setWallpaper
setWifi
shell
output is 'undefined' if the shell command failed. It's maximum size is restricted to around 750K.
showScene
var ok = showScene( str name, str displayAs, int hoffset, int voffset, bool
showExitIcon, bool waitForExit )
shutdown
var ok = shutdown()
silentMode
sl4a
soundEffects
Setting the system Sound Effects setting (sound from clicking on buttons etc.
speakerphone
statusBar
stayOn
stopLocation
var ok = stopLocation()
Stop tracking a location provider. This is only relevant when a getLocation function has been previously
called with the keepTracking parameter set.
systemLock
var ok = systemLock()
taskRunning
Whether the named Tasker task is currently running. Returns false if the task name is unknown.
takeCall
bool ok = takeCall();
takePhoto
bool ok = takePhoto( int camera, str fileName, str resolution, bool insertGallery )
type
unzip
usbTether
vibrate
vibratePattern
Cause the device to vibrate following the specified pattern, which consists of a sequence of off then on
millisecond durations e.g.
500,1000,750,1000
wait for 500ms, vibrates 1000ms, wait for 750ms, then vibrate for 1000ms.
wait
Warning: may cause some preceeding functions not to complete in some situations. If in doubt, use
JavaScript setTimeout() instead.
wifiTether
writeFile
If append is specified, the text will be attached to the end of the existing file contents (if there are any).
zip
level is the desired compression level from 1-9, with 9 resulting in the smallest file and the longest
compression time.
Notes
Audio Streams
Colours
Colours are specified in AARRGGBB hexadecimal format, with solid white being FFFFFFFF.
File Paths
File paths can be specified as either absolute (start with /) or relative (don't start with /).
Relative file paths are relative to the root of the internal storage media. So, for example, pics/me.jpg
might resolve to /sdcard/pics/me.jpg.
Detail Comparison
State: Cell Near
Setup
Create a state context, select Phone then Cell Near. Click Update and walk around a bit to scan for cell
towers nearby.
About
Uses information about the cell towers the phone uses for telephony to record and match a location.
When the display is off, frequency of checks is controlled by Prefs / Monitor / Display Off All
Checks.
If your profile keeps deactivating, go back to the Cell Near state and click the magnifying glass icon to
check for cells you may have missed in your scan.
Plus / Minus
(+) virtually no extra power on top of power needed for normal phone service
(+) when the display is on, context updates as soon as the tower is visible
(+) when the display is off, only one check period is needed to determine context exit
(-) highly inaccurate
(-) must be physically at the location in order to record it
Other Settings
Monitor / General Monitoring / Use New Cell API: if you're not seeing any cells at all
when scanning on a modern device, try checking this
Monitor / Display Off Monitoring / Cell Workaround: if things aren't working when the
display is off
Monitor / Display Off Monitoring / Cell Wake Screen: second possible workaround
when the display is off
State: BT Near
Setup
Create a State context, click BT Near (in the Net category), fill in the name or address of a bluetooth
device near the location you want to identify.
About
BT Near does regular bluetooth Scans and will activate when it recognizes a device you have configured
is nearby. Note: you don't have to connect to the device, so it doesn't have to be a device you own.
Frequency of checks is controlled by Prefs / Monitor / BT Scan Seconds (screen on) and Prefs /
Monitor / Display Off All Checks (screen off).
Check the BT Toggle box if you don't want bluetooth enabled all the time. It will then be toggled when
Tasker needs to do a scan.
If your target device is a low-energy device, deselect Standard Devices to reduce energy usage. If you
can pair with the target device, you can have a major reduction in power usage and scan times by not
selecting Non-Paired Devices.
Plus / Minus
Other Settings
Location: Net
Setup
About
Net location accuracy varies greatly. It's very important that you create a large radius around the spot
you wish to detect.
Frequency of checks is controlled by Prefs / Monitor / Network Location Check (screen on) and
Prefs / Monitor / Display Off All Checks.
More Info.
Plus / Minus
Setup
Create a location context and deselect GPS. Make sure your device's Wifi is turned on when you want a
more accurate location fix.
About
Net location can be assisted by nearby access points when Wifi is turned on (Google has a map of APs
for many areas).
Turn Wifi off when not needed to conserve power e.g. use a Time context to turn wifi off at night.
Plus / Minus
(+) very good accuracy in built-up areas for relatively low power usage
(-) must be physically at the location in order to record it
Setup
Create a State context, click Wifi Near (in the Net category), fill in the SSID of an Access Point (AP)
with the best signal near where you want to identify.
About
Wifi Near does regular Wifi Scans and will activate when it recognizes an AP you have configured is
nearby. Note: you don't have to connect to the AP. You could configure e.g. the neighbours AP if the
signal is strong enough.
Frequency of checks is controlled by Prefs / Monitor / Wifi Scan Seconds (screen on) and Prefs
/ Monitor / Display Off All Checks (screen off).
Check the Wifi Toggle box if you don't want wifi on all the time. It will then be toggled when Tasker
needs to do a scan. This isn't needed in In Android 4.4+ if you select Scanning Always Available in
Advanced Wifi Settings and will save power.
Plus / Minus
Other Settings
Location: GPS
Setup
About
Frequency of GPS checks is controlled by Prefs / Monitor / GPS Check (screen on) and Prefs /
Monitor / Display Off All Checks. Higher frequencies mean more battery usage but that location
changes will be noticed more quickly.
When indoors, GPS will try a long time to get a signal, using a lot of battery. Adjust it at Prefs /
Monitor / GPS Timeout. Make the timeout as low as you can until you start losing effectiveness.
More Info.
Plus / Minus
Other Settings
Advanced Strategies
Motion Detection
Some devices have a low-power accelerometer that can be active while the rest of the device is sleeping.
For such devices, Tasker will not do location checks with the display off unless it detects that significant
movement has taken place since the last check, resulting in lower power usage and faster response times
when the device does eventually move.
Multiple Contexts
Tasker does not check high-power contexts until all lower-power contexts in the same profile are active.
You can use this to reduce power consumption. For instance, if you use the Wifi Near state to detect
coming home, you could add a Location: Net context to the same profile, so that wifi scanning will only
take place when you are in the right neighbourhood.
Location Control
Disable GPS/Net location when they're not needed by creating a separate profile with e.g. a Time
context which disables GPS during the night.
This works because Location contexts assume you are in the same location until there is a fix which says
otherwise.
Pattern Matching
What's Pattern Matching ?
With Pattern Matching, you specify a pattern which tells Tasker what text you wish to match. For
instance, if you want to match any telephone number starting with 0135, you can specify the simple
match 0135*. * is a special character which matches any number of any character.
Tasker has two type of matching, Simple Matching and more advanced Regex Matching.
Simple Matching
Where's It Used ?
in the If condition of an action, when the ~ (match) or !~ (not match) operators are specified.
in text paremeters of State and Event contexts
some other places :-)
Matching Rules
Examples
Caller Matching
Caller matching (some events and states e.g. Call) is handled slightly differently.
Examples:
Regular expressions are similar to simple matching patterns but have many more features and are much
harder for non-technical people.
Where's It Used ?
Matching Rules
Standard Java regular expression matching is applied. The Android Developer site has a reference page.
Maths
Where Is Maths Used ?
What's Available
Operators
Constants
Functions
Power
Internally, Tasker does its best to keep power usage down. Following are some macro-
strategies to achieve this.
Context Monitoring
When a profile contains multiple contexts, power is saved by only monitoring for changes in order of the
least-power-hungry first. For example, in a profile with a Time and App context, Tasker will not decide
that it needs to monitor for a changing application unless the Time context is active (because the profile
cannot become active until both contexts are active).
Other State
Day / Time
Calendar Entry State
Cell Near State
App
BT Near State
Network Location
Wifi Near State
GPS Location
Temperature / Humidity / Proximity / Pressure / Magnetic Field / Light Sensor / Gesture Event /
Orientation State (accelerometer activation)
Items at the bottom of the list won't become eligible for monitoring until all items further up the list are
active.
Display-Off Checks
When the display is off, all necessary 'active' checks (GPS/Net Location, Wifi Near, App) are done at
the same time so that the device is awake for as short a time as possible. See Display Off Timings in
Menu / Prefs / Monitor for the frequency and maximum duration of these checks.
Settings
What's A Setting ?
Settings are actions like Display Brightness and Ringer Volume whose effects are reversed by Tasker
when the profile(s) which applied them are no longer active.
Settings have a cog icon next to them. Normal actions have a lightning bolt.
Single Profile
When a setting is applied by the profile's Enter Task, its value is restored after the profile becomes
inactive again. For example, if the ringer volume is at 7 and is set to 0 in the Enter Task, when the profile
becomes inactive it is automatically set back to 7.
In other words, settings are only valid for the lifetime of their profiles.
Multiple Profiles
1. the setting has the value from the most recently activated profile
2. when all profiles are inactive, the setting has the value from before any profile was active
Special Cases
if a setting is changed by the Exit Task the profile will never save the setting's initial value.
settings changed in an instant profile (one with an event context or repeating/non-ranged time
context) remain changed after the event. The reasoning is that there is no point in changing the
setting for the half-second that the event lasts.
Notes
settings are not actively maintained. If something else changes the setting once the Enter task has
run, it's not the case that this is detected and the Enter task value automatically reapplied.
Complicated, huh ?
Variables
General
A variable is a named value which changes over time e.g. the level of the battery, the time of day.
When Tasker encounters a variable name in a text, it replaces the name with the current value of the
relevant variable before carrying out the action.
is unknown when the task is created e.g. respond to an SMS; the sender is not known until the
SMS is received.
allow flow control within and between tasks
record data for some future use e.g. passing data between tasks
Variables which have an all-lower-case name (e.g. %fruit_bar) are local, meaning that their value is
specific to the task or scene in which they are used.
Variables which have one or more capital letters in their name (e.g. %Car, %WIFI) are global, meaning
that wherever they are accessed from the same value is returned.
Built-In Variables
Action Error
%err
Is set to an integer if an error occurred when running the last action. The actual number can signify
the error which occurred, but is usually 1 for most Tasker actions (notable exception: Run Shell
and plugins).
Action Error Description
%errmsg
A description of the error which last resulted in %err being set. Currently never set by Tasker
but possibly by some plugin actions.
Task Priority
%priority
The priority of the running task. The priority determines which task executes its next action when
several tasks are running together.
See also: Task Scheduling
Task Queue Time
%qtime
How long (seconds) the running task has been running.
Note that tasks can be interrupted by higher priority tasks, so this number is not necessarily the
total run-time of the task.
Task Caller
%caller
A variable array tracing the origin of the current running task. %caller1 gives the origin of the
current task, %caller2 the origin of %caller1 etc.
Example: if task A uses action Perform Task to start task B, then when task A is run by pressing
the Play button in the task edit screen, %caller1 in task B will show task=A, %caller2 will show
ui.
profile
a profile (when it's state changes). callername is either enter or exit depending on whether
the profile activated or deactivated. subcallername is the name of the profile, if it has one,
otherwise anon
scene
a scene event, with callername being the scene name. For element events, subcallername is
the element name. For action bar button presses, subcallername is the label if one was
given. For scene-global events (e.g. Key), subcallername is event type
ui
the Play button in the task edit screen in the Tasker UI
launch
clicking a child application icon in the launcher
nbutton
a notification action button, either from Tasker's permanent notification or one created with
one of the Notify actions. callername specifies the label of the button if present.
external
an external application
qstile
a Quick Settings tile. callername specifies the label of the tile.
appshort
an app shortcut (accessed via long-click on the Tasker icon). callername specifies the label
of the tile.
task
another task, from a Perform Task action. subcallername is the task name, if it has one,
otherwise anon
%DEVTID
Returns the unique telephony-based ID for the device (e.g. for GSM the IMEI, for CDMA the
MEID or ESN).
Not available on all devices.
Display Brightness %BRIGHT
Current screen brightness, 0-255. On some devices, if the Android setting Auto Brightness is
enabled, the value will always be 255.
Display Timeout %DTOUT
Current system screen timeout (seconds).
Email From / Cc / Subject / Date / Time (dynamic)
%EFROM / %ECC / %ESUBJ / %EDATE / %ETIME
The From, Cc, Subject, Received Date and Received Time of the last email received by the K9
email agent.
Free Memory
%MEMF
System free memory remaining in MB.
GPS Status
(monitored,dynamic Gingerbread+) %GPS
Whether the system GPS receiver is on or off.
Heart Rate (monitored,dynamic)
%HEART
The current detected heart rate in beats per minute.
See also: state Heart Rate.
The value will be negative for no contact (-1), accuracy unreliable (-2) or some other problem (-3)
HTTP Response Code / Data / Content Length
(dynamic)) %HTTPR / %HTTPD / %HTTPL
Values from the last HTTP POST/GET action.
If the server doesn't return a content length, %HTTPL will be calculated from the returned data
where possible.
Input Method
%IMETHOD
The current active input method. Consists of 4 parts separated by commas: Method Name,
SubType Name, Mode, Locale.
To access particular parts, use the Variable Split action.
Interrupt Mode (dynamic)
%INTERRUPT
Only available on Android 5.0+, requires Tasker's notification access service to be enabled, see
Android's Sound & Notification settings.
Android 5.0+: the current state of interruptions mode on the device: none, priority or all
See Also: action Interrupt Mode
Android 6.0+: the current state of Do Not Disturb mode on the device: none, priority, all or
alarms
See Also: action Do Not Disturb
Keyguard Status
%KEYG
Whether the Keyguard is on or off
Last Application
%LAPP
The name of the application that was in the foreground before the current one e.g. Maps.
Last Photo
%FOTO
The filesystem path to the last photo taken by Tasker or the standard system camera application.
Light Level (dynamic,monitored)
%LIGHT
The last recorded light level in lux.
Note that Android does not return a value until the light level changes, so to test the sensor is
working you should put it near a bright light initially.
May not change when the device display is off, see Menu / Prefs / More / Display Off
Monitoring / Light Sensor.
Location (dynamic)
%LOC
The latitude and longitude of the last GPS fix.
See note.
Location Accuracy (dynamic)
%LOCACC
The accuracy in metres of the last GPS fix.
See note.
Location Altitude (dynamic)
%LOCALT
The altitude in metres of the last GPS fix, or 0 if unavailable.
See note.
Location Speed (dynamic)
%LOCSPD
The speed in metres/second at the last GPS position fix or 0 if unavailable.
See note.
Location Fix Time Seconds (dynamic)
%LOCTMS
The time in seconds of the last GPS fix. To get age of fix, take this away from %TIMES.
This value is not set until an offset of the GPS time from the fixed time has been calculated
(should be after the first GPS fix) because the value is meaningless until that point.
See note.
Location (Net) (dynamic)
%LOCN
The latitude and longitude of the last network location fix.
See note.
Location Accuracy (Net) (dynamic)
%LOCNACC
The accuracy in metres of the last network location fix.
See note.
Location Fix Time (Net) (dynamic)
%LOCNTMS
The time in seconds of the last net location fix. To get age of fix, take this away from %TIMES.
See note.
Magnetic Field Strength (monitored,dynamic)
%MFIELD
The total magnitudes in micro-Teslas of the magnetic fields acting on all three axis of the devices
sensor.
Updated once per second.
See Also: state Magnetic Field.
Music Track (dynamic,monitored)))
%MTRACK
The current playing music track, supported for:
Tasker actions Music Play and Music Play Dir
Built-in Android music-player, probably not on all devices however
Power AMP
BeyondPod (Tasker v1.2.1+)
Phantom Music Control Pro
Media Utilities
Priority: if both Tasker and one of the other supported apps are playing simultaneously, the
non-Tasker track will be shown. If more than one of the other supported apps is playing
simultaneuosly, behaviour is unspecified.
Notes:
if you don't have a supported player, you could try Phantom Music Control Pro or Media
Utilities, which support a lot of players and should pass the info on to Tasker
pausing a track clears the variable, unpausing sets it again
your music player may need an option enabled in order to broadcast the track information,
or the broadcast may only be available in a 'pro' version
Muted
%MUTED
Whether the microphone is currently muted (on) or not (off).
Night Mode
%NIGHT
%SPEECH
The current utterance as a result of a Say or Say File action, if applicable.
Tasks Running (dynamic)
%TRUN
A comma-separated list of any named tasks which are currently running. The list always starts and
ends with a comma to make matching easier, if it's not empty.
Telephone Network (dynamic, monitored)
%TNET
The current telephony network operator the device is using.
May be unreliable on CDMA networks
Temperature (monitored,dynamic)
%TEMP
The current ambient temperature in degrees Celsius.
May not change when the device display is off, see Menu / Prefs / Monitor / Display Off
Monitoring / Temp. Sensor.
See also: state Temperature.
Text From/Date/Subject/Time (monitored)
%SMSRF / %SMSRN / %SMSRB / %MMSRS / %SMSRD / %SMSRT
The sender address, name, body, subject, date and time of the last text (SMS or MMS) received.
These variables will be empty until the first time a text is received after they have been referenced
because Tasker does not monitor texts unless it's needed.
Name is set to sender address of no contact could be looked up. It's unavailable on Android
versions prior to 2.0.
Body (%SMSRB) is only set for SMSs.
Subject (%MMSRS) is only set for MMSs.
Time
%TIME
Current human-readable time separated by a period e.g. 10.59
Tether (dynamic)
%TETHER
A comma-separated list of enabled tethering forms i.e. connections over which another device can
connect to this one in order to use its internet connection.
The possible forms are wifi, usb or bt.
BT will only be present when an actual client is connected via BT for using the devices network
connection, whereas the others will be present as soon as the functionality is enabled (Android
bug/limitation).
Time MilliSeconds
%TIMEMS
The current time in milliseconds.
(milliseconds since some time in January, 1970, if you must know).
Time Seconds
%TIMES
The current time in seconds.
(seconds since some time in January, 1970, if you must know).
UI Mode (dynamic,monitored)
%UIMODE
The current Android UI mode.
One of car, desk, appliance, tv (television), watch, undef (undefined) or normal.
Uptime Seconds
%UPS
The number of seconds since the device last booted.
Volume - Alarm/Call/DTMF/Media/Notification/Ringer/System (dynamic)
%VOLA / %VOLC / %VOLD / %VOLM / %VOLN / %VOLR / %VOLS
Current audio channel volume level.
On some devices, volume changes are not picked up dynamically, on others not when using the
phone app.
WiFi Info
%WIFII
When connected to an Access Point (AP), shows human-readable data about the AP. When not
connected, show details of the most recent Wifi scan results for nearby APs.
WiFi Status (dynamic)
%WIFI
Whether WiFi is on or off. Note: if WiFi is enabling or disabled, in fact anything but enabled, it's
classed as off.
Wimax Status
%WIMAX
Whether Wimax is on or off. Note: if Wimax is enabling or disabled, in fact anything but enabled,
it's classed as off.
Window Label (monitored)
%WIN
The label of the current window, which could be a full-screen activity or a dialog.
Not set if the label is unknown.
For some windows, the label might be that of the first item in the window e.g. a menu entry or
even a button.
General Notes
Variables marked dynamic in the list above trigger changes in Variable Value states and Variable Set
events whenever their value changes.
Variables marked monitored will cause the relevant monitor to startup to track their state when they are
used in contexts or tasks which are used by widgets or enabled profiles. For instance, %CELLID used in
a Flash action will cause cell location to be tracked.
When the relevant provider (Net or GPS) of a location context is active, these variables report the values
from the provider, which may be more recent than Tasker has seen if other applications are asking for
location.
When the relevant provider is not active, these variables report the last values seen by Tasker, which
could be the result of a Get Location action or of monitoring for a Location Context.
That means the the reported fix times could go backwards, if you turn off the location provider between
two uses of the variables.
Location variables can also be manually updated by running the Get Location action.
User Variables
The action Variable Set (and several others) can be used to create new variables. Variable names have
the following restrictions:
Note: multiple copies of the same task running at the same time each have their own separate copy of
their local variables.
Scene-Local Variables
Each scene has its own set of local variables which it shares with the task that created it; both the scene
and task see changes to the variables made by either.
Any task which starts as a result of a scene event (e.g. a tap on an element) also shares the variables of
the scene (and thus of the original task which created the scene).
As a consequence, a task started by a scene event (e.g. Tap on an element) which shows a new scene
e.g. via the Show Scene action, will result in the second scene sharing the variables of the first scene.
When a task shows a scene that was created by a different task (or a different copy of the same task)
and subsequently hidden, the task's variables are copied to the scene variables (overriding values of
variables which already exist) but the task does not share the scene variables and cannot see changes to
them.
If you want to prevent a variable name being replaced, put a \ in front of it e.g.
Variable Set, %new, \%old
Will set the value of %new to %old, not the value of %old.
In order to precede a variable name with a \ you can escape the backslash e.g.
Variable Set, %new, \\%old
Variable References
It's possible to indirectly refer to variables by preceeding one or more extra % signs to the start of the
variable name. For example:
Variable Set, %colour, red
Variable Set, %varname, colour
Flash %%varname
Using this notation it's possible to assign variables whose name is not known beforehand:
Read File, variablename.txt, To Var, %varname
Variable Set, %%varname, red
This will set the variable whose name is stored in the file variablename.txt to red.
You can nest references as deeply as you like (e.g. %%%%var) but mental stress and bugs are sure to
follow.
If any part of the chain has an invalid variable name then the original reference will be returned. In the
first example, if %varname is set to !!!, then %%varname will be flashed instead of red.
Variable Lifetime
The value a global variable holds lasts until Tasker is uninstalled if it is not changed by any task.
Local variables are lost at the end of the task they were created in, or when the parent scene is
destroyed in the case of tasks called from scenes.
Uninitialized Variables
User-variables which have not had a value assigned do not have replacements carried out e.g. in the
expression I love %fruit, if %fruit is uninitialized, the expression remains as it is, otherwise %fruit is
replaced with the value.
Variables In Plugins
Plugin developers can tell Tasker to replace variables it finds in plugin strings with their current Tasker
value. If you have a plugin which doesn't support this, send the developer this URL
http://tasker.dinglisch.net/plugins.html
Variable Arrays
They are especially useful when used with the For action, since you can perform a set of actions on each
element in turn e.g. list a set of files then test each one.
Examples
If the four variables %arr1, %arr2, %arr3, %arr4 hold respectively a, b, c and d then we have an
array with 4 elements. These variables can be used just like any other, however it is also possible to
access them in special ways. Here are some examples:
%arr(#)
The number of defined array elements (4 in this case)
%arr(#>)
The index of the first defined array element, or 0 if none are defined (1).
%arr(#<)
The index of the last defined array element, or 0 if none are defined (4)
%arr(#?b/c)
A comma-separated list of the array indices (lowest to highest) with matching values, or 0 if none
match (2,3 in the example)
%arr(>)
The contents of the first defined array element (a)
%arr(<)
The contents of the last defined array element (d)
%arr() or %arr(:)
All of the array elements separated by commas (a,b,c,d)
%arr(2) or just %arr2
The content of the element with index 2 (b)
%arr(2:4)
Contents of defined elements with indices 2 to 4 (b,c,d)
%arr(:3)
All the defined elements with indices up to 3 (a,b,c)
%arr(3:)
All the defined elements with indices starting from 3 (c,d)
%arr(1:2)
All the defined elements with indices from 1 to 2 (a,b)
Notes:
arrays will virtually always have all their elements defined so e.g. %arr(>) will be the same as
%arr(1), %arr(#) will be the same as %arr(#<)
index specifiers can themselves be variables (e.g. %arr(1:%MAX) or %arr(#?%FINDME)) but not
variable arrays
Creating An Array
Inserting Elements
The Fill Spaces parameter might need more explanation. It is only relevant if one or more of the array
elements are undefined. As an example, if we have the array elements %arr1 and %arr3 containing
apple and banana:
Removing Elements
Use the Array Pop action. Note the difference between Array Pop and Variable Clear: Pop reduces
the number of elements in the array, while Clear merely changes elements to undefined.
Example: if we have the array elements %arr1, %arr2, %arr3 containing apple,pear and banana:
Deleting An Array
In most cases you could also use Variable Clear %arr* with Pattern Matching checked, but that would
also delete variables called e.g. %arrTOODEETOO so Array Clear is safer.
Sorting
The Array Process action offers various sorting options, amongst other things.
Array Efficiency
Arrays are intended for convenience when processing high-level data, not for e.g. processing
astronomical data. Doing thousands of array actions will likely take several seconds (although mostly
due to the housekeeping work done by Tasker in-between each action rather than due to the array
operations themselves).
In terms of storage efficiency, they are also fairly hopeless. You probably do not want to store tens of
thousands of items in an array.
How can I run more than one task when a profile goes active ?
Can I hide the notification list entry when Tasker is running ?
Can I change or remove the status bar icon when Tasker is running ?
What if I want a repeating time context, but I need to do something that takes a while ?
How can I do something every minute ?
How do I specify 9:30AM on Monday and 10AM on Tuesday with the same profile ?
How do I specify weekend night-times ?
How do I stop the screen dimming when I have the display Stay On set to e.g. 'With AC' ?
How can I stop Wifi Near toggling wifi on-off when the phone is in Airplane Mode ?
Can I divert incoming calls ?
How can I detect if Wifi is connected (not just enabled) ?
How can I import/export individual profiles, tasks or scenes ?
How do I turn off the flashing notification LED ?
How do I put my phone in Silent or Vibrate mode ?
Can I automate sending of an SMS / Call through Google Voice ?
Can I change/remove the notification sounds for particular apps ?
Can I silence all notifications except from particular applications ?
Can I change the input method ?
How do I test whether I can reach the Internet (ping) ?
How can I use whitespace (newline, tab etc) in action parameters ?
How can I run a task from a terminal login ?
How can I silence the camera shutter sound ?
There is a contact email given at Menu / Info / Support. In general, this is intended for order and
validation help, which is often confidential, and other private issues.
Please post Tasker usage queries/problems in the Tasker Forum where the developer is very active.
Advantages:
the user community has more experience than the developer with using Tasker
other people can benefit if your problem is solved
the developer has more time for fixing bugs and adding features, which benefits everyone
Try to make the log as soon as possible after the problem occurs.
If your problem covers a longer time-frame, you'll need an SD card log because the system log fills up
very quickly:
when the problem has occured, email the file /sdcard/Tasker/log/tasker.txt to the developer email
listed at Menu / Info / Support
include at the top a brief description of the problem that the log concerns
Standard Android doesn't allow an app to change, poke, prod or peek at anything within another app,
including simulating keypresses and screen taps.
On a rooted device, you can use some of the actions in the Input category to navigate around an app,
click on UI elements and enter text automatically.
If a Tasker user wants to automate some aspect of another program they use, they just need to point the
developer of the other app at the Tasker Developer Page and nag at him/her a bit.
Tasker will restore any setting which is changed in the Enter task of a profile. There are four ways to
prevent this:
1. deselect the Restore Settings in the Profile Properties of the relevant profile.
2. if you set the same setting in the Exit task of the profile Tasker will take that as a hint that the
previous value shouldn't be restored.
3. create a separate task to run the settings actions and in the Enter task of the profile do a Perform
Task action (from the category Tasker) on that separate task. This trick is known as Stefan's
Setting Sidestep.
4. you can use the corresponding Javascriptlet function instead of the setting action. Settings made in
Javascriptlets are not restored.
The closest you can get is to detect changes in a volume variable (e.g. %VOLR for the ringer volume)
via event Variable Set.
With Android 6.0+ if the external SD is being used as 'adoptable', 'flex' or 'internal' (the wording varies)
storage, there should be no issue.
Turning on, use the Display / Turn On action. Unfortunately, that action is inaccessible with Android
2.3+.
For turning off, you can use the Display / System Lock action with Android 2.0+.
For Android 1.6, you can set the Display Timeout to it's minimum (around 7 seconds) and then set it
back to normal in response to a Display Off event.
You don't have to configure 'default' settings in Tasker. The 'default' settings are how your device is
configured before any Tasker profile becomes active. This 'default' is automatically restored as profiles
become inactive.
How can I run more than one task when a profile goes active ?
Add an action Perform Task from the category Tasker for each task that you want to run (don't click the
Stop button).
Warning:: settings in the called tasks will not be restored by Tasker, only settings changed directly
within the Enter task.
If the notification is very annoying, it can be removed on many devices by setting the icon transparent at
Menu / Prefs / Monitor / Notification Icon.
If that doesn't work, disable the Run In Foreground setting which can be found at Menu / Prefs /
Monitor / Run In Foreground
Please read the help text associated with this option first.
Can I change or remove the status bar icon when Tasker is running ?
You can remove it with Menu / Prefs / Monitor / Show Notification Icon.
What if I want a repeating time context, but I need to do something that takes a while ?
GPS On
Wait 3 minutes
GPS Off
Set a repeat period of 2 minutes (the minumum allowed) and specify a task like this:
How do I specify 9:30AM on Monday and 10AM on Tuesday with the same profile ?
You can't, because the Time and Day subcontexts operate completely independent of each other. You
have to specify two profiles and run the same Task(s) with each of them (by giving the task a name).
But that won't work, because on Sunday at e.g. 3am the Day context (and hence the whole profile) won't
be active.
For this kind of situation, you need to specify a profile for which morning you want to be active and
another for which evenings. In the example, you want Friday and Saturday night plus Saturday or
Sunday morning:
Time: 23 - 24
Day: Friday or Saturday
Time: 00 - 09
Day: Saturday or Sunday
How do I stop the screen dimming when I have the display Stay On set to e.g. 'With AC' ?
The screen dims around 10 seconds before the current Screen Off Timeout value is reached. You can set
Screen Timeout (for the relevant context e.g. 'while docked') to Never (set all sliders to maximum) if you
don't like that behaviour.
How can I stop Wifi Near toggling wifi on-off when the phone is in Airplane Mode ?
Add a state Airplane Mode to your profile and click the Invert button, which means if Airplane Mode
is off.
It's not possible to divert incoming calls via Android, but most Mobile Carriers accept special dialled
sequences to do it before the call reaches your phone.
You can then use Tasker's Phone / Call action (with Auto Dial checked) to setup and cancel incoming
call diversions.
The 'standard' way is to use State Wifi Connected to set and clear your own variable with an enter and
exit task respectively.
An alternative trick is to match the word connected or connection in the %WIFII variable (the actual
word and lower/upper case changes with Android version).
Import:
Go to the main screen, long click on the tab for the type of thing you want to import.
Export:
If you're wondering what a flashing light is doing in the Audio section: ask Google, that's where they put
it in Android Settings.
Not directly through Tasker. However, Steelgirder Developments have (non-free) plugins which you can
easily use with Tasker to accomplish this.
Steelgirder and the author of Tasker are agreed on working together wherever further integration of these
plugins and Tasker is needed e.g. support for Tasker variables.
Yes, but it's a little complicated, please see the relevant forum post.
With Tasker versions from 1.0.10, you can try turning off all notifications (e.g. via Silent Mode or setting
the Notification Volume to 0) and then using Tasker to do alerts for particular app notifications using the
Notification event in the UI category.
Tasker trims the start and end of all parameters to prevent whitespace causing problems. The only
exception is the Variable Set action.
Therefore, if you want to use whitespace you should first assign it to a variable and then use the variable
where you want the whitespace to appear:
Variable Set, %white, THISISANEWLINE
Flash, Here's a newline: %white
That's only possible on a rooted phone because otherwise there will be a permission problem.
Try creating a new profile with an App context and select the Camera app. When asked to create a task,
add the following actions:
Then go to the Camera app, wait a couple of seconds and try taking a picture.
If you still hear the shutter sound, go back to the Tasker UI, click on the task that you created and hit the
Play button bottom-left to run the task manually. Then go back to the Camera app. If you still hear the
shutter sound, then it's not going to be possible for Tasker to disable it on your device.
Some manufacturers deliberately prevent disabling of the shutter sound, perhaps for legal reasons.
Addendum
A user has reported that setting DTMF volume to 0 removes the focus sound in the camera app.
Why isn't there a green light for the On/Off radio button on the main screen ?
Why does the action Display Brightness cause my keyboard or application to close ?
Why is the date in Tasker's notification list completely wrong ?
Why won't Tasker install on my custom ROM ?
Why doesn't my Perform Task action work when I Test it ?
Why doesn't my App Context work ?
Why doesn't the Keyguard action work properly ?
Why doesn't Tasker think my device is rooted ?
It's probably because you're using an action which needs Tasker's device administrator function (e.g.
Display / System Lock).
You can disable it by going to Android Settings / Location & Security / Device
Administration.
Why doesn't the Kill App action work in Android 2.2 like it used to ?
Google decided that the feature was being abused and causing more problems than it solved and it was
therefore watered down.
From Tasker version 1.0.21 it's more effective again if you have a rooted device.
Why isn't GPS coming on for my profile with Time And GPS Location contexts ?
In order to save power, Tasker only activates context detection as it is needed. Therefore it will not
attempt to fix your GPS location unless the Time context is active.
See the Power Usage section of the userguide for more details.
This is considered too dangerous. A mistake could easily result in being unable to enter Tasker and
therefore being unable to rectify the mistake.
Wifi Near requires two check periods to pass without seeing the Access Point before the profile exits.
This is intended to avoid the context activating and deactivating if the AP is briefly not visible.
Note also that there are different check periods for when the device is on or off, and by default the
off-period is much longer than the on-period. See Menu / Preferences / Monitor/ Display On/Off
Timings.
As an example, if you are not using GPS the accuracy of your fixes is probably around += 2km, so your
radius should be also minimally 2km.
If you *are* using GPS, the accuracy may still be only +-400m in built-up areas.
This will set your radius appropriate to the accuracy of the location providers at that spot.
Why does Tasker mess up the app launching when I have an Application Context for it ?
Some applications are sensitive like this. Probably all you have to do is put as the first action in the
Enter task the action Wait and give as a parameter e.g. 300ms. If that doesn't work keep increasing the
value until it does.
That gives the application time to finish initializing before messing around with the screen brightness etc.
Some possibilities:
if your profile sets setting x to on, then if x is already on when the profile goes active, it will be left
at 1 when the profile exits. Test for this by putting an Alert / Notify action in the enter task to see
what the original value was.
some other apps installed on the system can cause Tasker to be killed and therefore the original
settings being forgotten e.g. this has been reported to be a problem with Titanium Backup.
similarly, if the system is rebooted suddenly, some devices aren't fast enough to save all the
settings before the system turns off.
Firstly, if are you using any of these other apps which have been reported as interfering try disabling or
temporarily uninstalling them:
'Task Killers'
Quick System Info
Autostarts
After that:
Usually this is due to Tasker not being enabled, see the On/Off button in the first UI screen.
The likely cause is that you are running a non-standard Android ROM which doesn't contain the correct
(or maybe any) Google Maps library.
Why can't I see any Tasker widgets in the home screen widget selector ?
This is almost always because you have Tasker installed on the SD card, which is just not possible due to
several reasons related to how Tasker works.
It's important to understand that a repeating time context is a series of instant events.
Trying to combine a repeating time context with another context that does active monitoring usually
won't work e.g.
Time: Repeating Every 5 Minutes
Task: Enable Wifi (no toggle)
Wifi Near is checked on a static schedule. You currently can't change the schedule dynamically, so the
above two profiles will only do XXX when the 5 minute repeat happens to coincide with when Tasker is
doing it's Wifi Near check.
Why aren't my exit tasks run / settings restored before the device shuts down ?
Android gives an app very little time to perform cleanup during shutdown, this is especially a problem on
slow devices.
Therefore (as of 1.0.9), Tasker only attempts to run Variable Set, Clear, Add and Subtract actions when
the device shuts down, since they take relatively little time.
In the future, Tasker will have some concept of default values which will then be restored when it starts
after the device has booted again.
On Android 1.5 devices, Tasker cannot do anything at shutdown because the system does not send a
notification.
Probably the location Android reports is bouncing between a point inside your location radius and one
outside. This is relatively unusual because Tasker has some built-in mechanisms to try and prevent it.
A quick fix is to add a Cooldown to your profile. Click on a context, select Profile then Properties and
slide the Cooldown Time to 30 minutes.
The profile is then prevented from going active more than once every 30 minutes.
Even when your phone is motionless, it will probably still often switch between different cell towers.
Going to a different room in your house may involve a whole different set of cell towers.
When you notice your Cell Near state going inactive at your location (and assuming you still have a
signal), launch Tasker, click on the Cell Near context and edit it. Click Scan and you should immediately
see a new Cell added to the list. Click Done and then Apply and your context should go active again.
Sometimes the new cell will only be visible for a few seconds and will not appear when you press scan.
In that case, press the Recent button and select it manually from the list.
not all devices support all colours. Many devices will only support red and green. In general,
colours near the top of the list are more likely to be supported.
some devices will only flash the LED when the device is off at the time the notification is
received.
It's not possible for the Tasker developer to work around, but is reported as fixed in version 1.25.405.1 of
the firmware.
Some docking stations just aren't recognized as such (Android doesn't indicate that a docking station has
been connected).
Depending on other things you connect your device to, you might be able to use one of the following as
a workaround:
Why aren't I getting any cell data for the Cell Near state ?
It's possible that you will only be able to receive, not make, phone calls as another symptom of this
problem.
Why isn't there a green light for the On/Off radio button on the main screen ?
A user discovered that this happens when the DPI value of the Android build is set to particulart values
(e.g. 200,240 is OK, 220 the light disappears).
Why does the action Display Brightness cause my keyboard or application to close ?
Normally Android does not effect changes to brightness immediately, so Tasker has to use a trick to
make it happen. That trick can sometimes have the side effect that e.g. some dialogs like the soft
keyboard may close.
To avoid that, you can deselect the Immediate Effect checkbox in the Display Brightness action.
This occurs if you select a transparent Notification Icon at Menu / Prefs / Monitor, but don't specify
The most likely reason is that you don't have Google Maps installed on the device. With several custom
ROMs that comes as a separate package.
When task (a) runs a Perform Task action to start task (b), the order in which the two tasks are
executed depends on their relative priorities.
A feature of the Test button is that the tested task (a) runs at extremely high priority to ensure that the
task runs even if other tasks are running in the background.
So testing Perform Task with the Test button will only work as expected if in actual usage task (a) will
always have higher priority than task (b) or the Perform Task action has Stop specified.
If you are using Android 5.0+, make sure Tasker's Accessibility Service is enabled in Android Settings
(Accessibility section).
If you are using Nova Launcher, set Settings / App & Widget Drawer / Advanced /
Automatically Close to off.
Some apps (very few) aren't detected by Tasker, usually due to their internal structure.
Some custom Android ROMs also have special configurations which prevent Tasker's app detection
working.
For the latter problem, there are a few things you can try:
look for special settings in your ROM that relate to 'keeping the launcher in memory'. They should
be disabled.
change the build properties file. Look in /system/build.prop (or possibly /system/local.prop
or /data/local.prop) for a line like:
ro.HOME_APP_ADJ=-17
ro.HOME_APP_ADJ=1
If you didn't find an existing line, just add the new line as above.
Note: you will first need to make /system writeable. You can do that e.g. with Tasker's Remount
action. Remember to make it not-writeable again after making the change.
try detecting apps with a state using the %WIN (window title) variable; create a new state
Variable Value, %WIN, Matches, TITLE
where TITLE is the title of the window of the app you are interested in. For this solution to work,
you also need to enable Tasker's Accessibility Service in Android Settings.
You can check what %WIN shows for the app you are interested in with this profile:
Android does not officially support toggling of the Keyguard by an app. The Keyguard action was
introduced in an early version of Tasker when a reliable workaround was possible.
In more recent Android versions, the workaround is no longer so reliable due to internal changes made
within Android. If Keyguard works at all, there may be disturbing side-effects.
The Keyguard action will likely be most reliablewhen the display is on and and the Keyguard is already
unlocked.
Some people have more luck with the same functionality provided by the Secure Settings plugin. After
install, you can find the Secure Settings plugin in the Plugin action category. Note that a rooted device is
not needed to use this part of Secure Settings.
If root is not being detected on your device but you are sure that root can be used by Tasker, you can
therefore probably fix that by adding a line like:
# modversion this line enables Tasker root support
FAQ: Why... ?
Why am I an idiot if I use a pirated copy of Tasker ?
Why is GPS often scanning when I unlock my device ?
Why does Tasker need so many permissions ?
Why does Tasker need the INTERNET permission ?
Why isn't Tasker shown in the Application Context list ?
Why does Tasker have it's own music player and controls for the system music player ?
Why does a Cell Near context not become inactive when I turn on Airplane Mode ?
Why can't I use a downloaded icon for my shortcut task / Notify action ?
Why does my profile have 2 enter tasks ? Why can't I add an exit task ?
The hacker can do virtually anything with your phone. Record your calls and upload them to a website,
SMS your location and all your contacts, make calls automatically, wipe your SD card, secretely record
from your microphone any time etc etc
When the device wakes up, Tasker switches from a low-frequency GPS check schedule to a higher-
frequency one. Android's GPS software always does an immediate scan when switching the check
frequency.
It's not because Tasker is constantly scanning while the device is off
Unfortunately, Android requires that an app specify it's permissions even if they are never used, which
means that permissions for all of the things which the user could potentially ask Tasker to do need to be
specified.
If you are still concerned, consider that Tasker has over 25,000 downloads at the time of writing and any
abuse taking place would quickly be discovered.
google maps downloading map data, only for setting up a Location context
to carry out HTTP Post/Get actions and other actions that require an Internet connection by their
nature
to verify the order number, and only until it has been successfully verified
to check whether a new Tasker version is available, if configured in Preferences
Because it's easy to get into trouble firing tasks in Tasker. For example, if a profile is setup with a Tasker
Application Context and a task with Load App Calculator, it will not be possible to enter Tasker
anymore.
Why does Tasker have it's own music player and controls for the system music player ?
the system music player is not guaranteed to be present or the same on all systems.
finer control can be exercised over the Tasker player e.g. starting the track from a preset seek
point
Tasker's player is more discrete, there is no notification bar icon.
by having two players available you can do things like alternating audio from different music
sources or even playing simiultaneously.
Why does a Cell Near context not become inactive when I turn on Airplane Mode ?
Cell Near is sticky. That means that once active it stays active until a non-matching Cell ID is seen. In
Airplane Mode no Cell IDs are seen and so the context stays active.
Many people use Airplane Mode at night e.g. to save battery. If you also have a Cell Near profile that
detects when you are home, it would become inactive at night if Cell Near wasn't sticky.
A couple of points:
Why can't I use a downloaded icon for my shortcut task / Notify action ?
Some things just weren't meant to be (i.e. Android doesn't allow it).
To solve the shortcut problem, you can always use a widget though.
For notifications:
if you would like this to be possible one day, please star this Android feature request
it would be technically possible to create 'icon pack' APKs and that might happen one day
Why does my profile have 2 enter tasks ? Why can't I add an exit task ?
As a convenience, the Exit task with such profiles is replaced by an extra Enter task in case you have a
lot to do with that profile.
Note that the tasks you specify execute in the order they are specified, their actions do not alternate.
Sure. You can export projects as apps and projects can contain profiles, tasks and scenes.
For help accessing projects, see Menu / Info / Help This Screen in the main screen.
Tasker tries to detect when it's monitor service is no longer needed but that is not always possible. You
can put a Disable action from the Tasker category at the end of your launch task to ensure that it
happens.
The monitor will be started again automatically each time the app is lauched from the home screen.
If %LaunchCount = 0
...initialization actions...
Else
...normal actions...
Elsif
Variable Add, %LaunchCount, 1
Use the Test App action and select the mode This Package.
The resulting variable will contain the package identifier you specified in the App Configuration screen if
the task is running in a child app, otherwise it will contain one of net.dinglisch.android.tasker or
net.dinglisch.android.taskerm.
One possible cause is: when an app has just been installed on Android it is in a 'frozen' state until there is
some user interaction with it (usually clicking the home screen icon at least once).
Try to make the log as soon as possible after the problem occurs.
Try to make the log as soon as possible after the problem occurs.
Tasker's code does not include the licencing service because of continual problems it caused. In any
case, the licensing service is ineffectual for preventing unauthorized code distribution.
If you really want to include licensing in your app, you could e.g. require the user to enter their order
code and check via the HTTP Get action on your server if that is a valid number.
Setting up such a server to download Google order details and accept verification requests is a lot of
effort and requires some technical knowledge, however.
Long answer: when a new app is created, Tasker doesn't create new java code to implement the things in
your task or project configuration. Instead, the existing Tasker code is used with the new app and
executed similarly to how it's executed in Tasker, but in the shell of a new APK.
FAQ: Other
Do you plan to include feature X ?
Should I worry about using Tasker's Accessibility service ?
What's the difference between a Widget and a Shortcut ?
What's an Instant Profile ?
The developer has a large list of potential features and works through it according to a mystical method
based on star configurations. It's difficult to say what will be done in advance, sorry.
Not at all.
Although the Android warning says Tasker might read passwords, in fact:
Android doesn't allow apps to see the contents of fields labelled Password
Tasker doesn't even ask Android for data about text fields, only buttons, windows and notifications
Most profiles have a duration. Their enter task fires, they are active for a while, then they go inactive
and settings may be restored or an exit task fired. However, profiles with
an Event context, or
a Time context where the From parameter is the same as the To parameter, or
a Time context with a repeat value specified
are only active for an instant and hence it does not make sense to talk about an exit task and restoration
of settings.
There's no point setting brightness from 200 to 30, and then a millisecond later back to 200, therefore
settings made by an instant profile stay at whatever value is specified.