<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://macrodroidforum.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dm114</id>
	<title>MacroDroid Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://macrodroidforum.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dm114"/>
	<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php/Special:Contributions/Dm114"/>
	<updated>2026-04-03T19:59:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Actions&amp;diff=2799</id>
		<title>Actions</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Actions&amp;diff=2799"/>
		<updated>2024-12-05T05:05:54Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Synchronous vs asynchronous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre style=&amp;quot;background-color: #FFFF99; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
An action is something your device can do when a macro runs.&lt;br /&gt;
A macro must have at least one action to be valid.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Synchronous vs asynchronous ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
MacroDroid actions typically execute quickly, but certain actions like HTTP requests or shell scripts may take longer. To ensure that subsequent actions wait for these longer actions to complete before continuing, enable the 'Block next action until complete' option in the action's configuration GUI. Otherwise, the action will run asynchronously while other actions continue.&lt;br /&gt;
&lt;br /&gt;
In traditional programming languages, you could pass a callback function to execute after the asynchronous action is complete. This allows you to perform additional actions or work with the data returned by the asynchronous action. However, MacroDroid's inner workings are arbitrary, so there is no systematic option for this. Instead, you must rely on different workarounds.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Control flow ==&lt;br /&gt;
&lt;br /&gt;
[[Control flow: If clause|If clause]]&lt;br /&gt;
&lt;br /&gt;
[[Control flow: If confirmed then|If confirmed then]]&lt;br /&gt;
&lt;br /&gt;
[[Control flow: Repeat actions|Repeat actions]]&lt;br /&gt;
&lt;br /&gt;
[[Control flow:  Iterate Dictionary/Array| Iterate Dictionary/Array]]&lt;br /&gt;
&lt;br /&gt;
[[Control flow: Break from loop|Break from loop]]&lt;br /&gt;
&lt;br /&gt;
[[Control flow: Continue loop|Continue loop]]&lt;br /&gt;
&lt;br /&gt;
== List of Actions ==&lt;br /&gt;
&lt;br /&gt;
[[Action: Accessibility Service|Accessibility Service]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Action Block|Action Block]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Airplane Mode On/Off|Airplane Mode On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Alarm Clock|Alarm Clock]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Ambient Display|Ambient Display]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Animation Overlay|Animation Overlay]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Android Shortcut|Android Shortcut]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Android Wear|Android Wear]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Answer Call|Answer Call]]&lt;br /&gt;
&lt;br /&gt;
[[Action: App Enable/Disable|App Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Authenticate User|Authenticate User]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Array Manipulation|Array Manipulation]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Autosync On/Off|Autosync On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Battery Saver|Battery Saver]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Block Screen Touch|Screen Block Touch]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Bluetooth Configure|Bluetooth Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Brightness|Brightness]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Calendar - Add Event|Calendar - Add Event]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Call Reject|Call Reject]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Camera Enable/Disable|Camera Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Cancel Macro Actions|Cancel Macro Actions]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Car Mode|Car Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Check Pixel Colour|Check pixel colour]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Check Text In Screenshot|Check Text In Screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Check Text On Screen|Check Text On Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear App Data|Clear App Data]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Call Log|Clear Call Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Dictionary/Array Entry|Clear Dictionary/Array Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear MacroDroid Dialog|Clear MacroDroid Dialog]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Log|Clear Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Notifications|Clear Notifications]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Variables|Clear Variables]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clipboard Refresh|Clipboard Refresh]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Configure App Notifications|Configure App Notifications]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Configure Quick Tile|Configure Quick Tile]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Confirm Next|Confirm Next]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Connectivity Check|Connectivity Check]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Contact Via App|Contact Via App]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Control Media|Control Media]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Dark Theme|Dark Theme]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Daydream/Screensaver On|Daydream/Screensaver On]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Delete Macro|Delete Macro]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Delete Variable|Delete Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Demo Mode|Demo Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Dim Screen|Dim Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Disable MacroDroid|Disable MacroDroid]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Display Bubble Notification|Display Bubble Notification]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Display Dialog|Display Dialog]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Display Notification|Display Notification]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Empty Action|Empty Action]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Enable/Disable Category|Enable/Disable Category]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Enable/Disable Macro|Enable/Disable Macro]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Enable/Disable Trigger|Enable/Disable Trigger]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Exit Action Block|Exit Action Block]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Expand/Collapse Status Bar|Expand/Collapse Status Bar]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Export Log|Export Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Export Macros|Export Macros]]&lt;br /&gt;
&lt;br /&gt;
[[Action: File Operation| File Operation]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Fill Clipboard|Fill Clipboard]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Floating Button Configure|Floating Button Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Floating text|Floating text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Font Scale|Font Scale]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Force Location Update|Force Location Update]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Force Screen Rotation|Force Screen Rotation]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Get Light Level|Get Light Level]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Get Text From View Id|Get Text From View Id]]&lt;br /&gt;
&lt;br /&gt;
[[Action: GPS Enable/Disable|GPS Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Heads-up Enable/Disable|Heads-up Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: HotSpot On/Off|HotSpot On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: HTTP Request|HTTP Request]]&lt;br /&gt;
&lt;br /&gt;
[[Action: HTTP Server|HTTP Server]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Immersive Mode|Immersive Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: JavaScript Code|JavaScript Code]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Invert Colours|Invert Colours]]&lt;br /&gt;
&lt;br /&gt;
[[Action: JSON Parse|JSON Parse]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Keep Device Awake|Keep Device Awake]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Keyboard - Set Default|Keyboard - Set Default]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Keyboard Prompt|Keyboard Prompt]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Kill Application|Kill Application]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Kill Background Processes|Kill Background Processes]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch and Press|Launch and Press]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch Application|Launch Application]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch Home Screen|Launch Home Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch Shortcut|Launch Shortcut]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Locale/Tasker Plugin|Locale/Tasker Plugin]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Location Mode|Location Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Log Event|Log Event]]&lt;br /&gt;
&lt;br /&gt;
[[Action: MacroDroid Drawer|MacroDroid Drawer]]&lt;br /&gt;
&lt;br /&gt;
[[Action: MacroDroid Settings|MacroDroid Settings]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Macro run|Macro run]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Make Call|Make Call]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Mobile Data On/Off|Mobile Data On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: NFC Enable/Disable|NFC Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Notification Interaction|Notification Interaction]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Notification LED Enable/Disable|Notification LED Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Notification Reply|Notification Reply]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open Call Log|Open Call Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open File|Open File]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open Last Photo|Open Last Photo]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open MacroDroid Log|Open MacroDroid Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open Website / HTTP GET|Open Website / HTTP GET]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Option Dialog|Option Dialog]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Play/Stop Sound|Play/Stop Sound]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Popup Message|Popup Message]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Press Back Button|Press Back Button]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Priority Mode / Do Not Disturb|Priority Mode / Do Not Disturb]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Read Screen Contents|Read Screen Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Read Screenshot Contents|Read Screenshot Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Reboot/Power Off|Reboot/Power Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Record Microphone|Record Microphone]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Restore Hidden Notifications|Restore Hidden Notifications]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Ringtone Configure|Ringtone Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Say Current Time|Say Current Time]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Screen On/Off|Screen On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Secure Settings|Secure Settings]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Selection Dialog|Selection Dialog]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Send Email|Send Email]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Send Intent|Send Intent]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Send SMS|Send SMS]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Button Bar Image|Set Button Bar Image]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Location Update Rate|Set Location Update Rate]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Digital Assistant|Set Digital Assistant]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set MacroDroid Icon|Set MacroDroid Icon]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set MacroDroid Mode|Set MacroDroid Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set MacroDroid Notification Text|Set MacroDroid Notification Text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Notification Sound|Set Notification Sound]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Screen Lock|Set Screen Lock]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Screen Timeout|Set Screen Timeout]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Variable|Set Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Wallpaper|Set Wallpaper]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Share Last Photo|Share Last Photo]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Share Text|Share Text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Share Location|Share Location]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Shell Script|Shell Script]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Silent - Vibrate Off|Silent - Vibrate Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Silent - Show Volume Popup|Show Volume Popup]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Speak Text|Speak Text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Speakerphone On/Off|Speakerphone On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Stopwatch|Stopwatch]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Sync Account|Sync Account]]&lt;br /&gt;
&lt;br /&gt;
[[Action: System Setting|System Setting]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Take Picture|Take Picture]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Take Screenshot|Take Screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Text_from_Image_(OCR)|Text from Image (OCR)]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Text Manipulation|Text Manipulation]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Torch On/Off|Torch On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Translate Text|Translate Text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Touch Screen|Touch Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: UDP Command|UDP Command]]&lt;br /&gt;
&lt;br /&gt;
[[Action: UI Interaction|UI Interaction]]&lt;br /&gt;
&lt;br /&gt;
[[Action: USB Tethering|USB Tethering]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Vibrate|Vibrate]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Vibrate Enable/Disable|Vibrate Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Voice Input|Voice Input]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Voice Search|Voice Search]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Volume Change|Volume Change]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Volume Up/Down|Volume Up/Down]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Wait Before Next Action|Wait Before Next Action]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Wait Until Trigger|Wait Until Trigger]]&lt;br /&gt;
&lt;br /&gt;
[[Action: WhatsApp Send|WhatsApp Send]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Widget Button Modify|Widget Button Modify]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Wifi Configure|Wifi Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Write to File|Write to File]]&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=2351</id>
		<title>Action: Set Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=2351"/>
		<updated>2024-05-25T12:43:23Z</updated>

		<summary type="html">&lt;p&gt;Dm114: Orthographic correction (a letter missing)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows you to set the value of a specific MacroDroid variable.&lt;br /&gt;
&lt;br /&gt;
As explained in the [[Variables]] section, variables are divided into '''2 categories''' and '''4 types'''. Whatever category or type, their value/content is never reset and remains, even after device reboot. They are identified by a '''name''' given at creation time ''(see below)''&lt;br /&gt;
&lt;br /&gt;
'''Naming:'''&lt;br /&gt;
&lt;br /&gt;
Every variable is identified by its name. This name can be made of any set of character. To facilitate maintainability, the name should relate the content or purpose of the named variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&lt;br /&gt;
&lt;br /&gt;
Every variable can be either '''local''' or '''global'''.&lt;br /&gt;
* A '''local variable''' belongs to the macro it has been created into. It can only be used inside this macro. Its name must be unique inside the macro it belongs to.&lt;br /&gt;
* A '''global variable''' can be accessed and used from any macro. Its name must be unique among all the 'global' variables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Type:'''&lt;br /&gt;
&lt;br /&gt;
A variable belongs to 1 of the 4 following types: '''Boolean, Integer, Decimal''' or '''String'''.&lt;br /&gt;
*'''Boolean''' type allows 2 states: True or False&lt;br /&gt;
*'''Integer''' type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''Decimal''' type is to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison. Sientific notation may be used: 0.0012 or 1.2E-3&lt;br /&gt;
*'''String''' type contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). ''HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.''&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Set variable&amp;quot; action''' allows to store a specific value to a given variable. This variable has to be selected among all the available variables or created by selecting the first item of the list called ''[New Variable]''. In this case, you'll be asked what category, name and type have to be assigned to this new variable ''(see above)''.&lt;br /&gt;
&lt;br /&gt;
According to its type ''(see above)'', you can choose a value or method to be assigned to among a list of methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Boolean variables:'''&lt;br /&gt;
* False or True value&lt;br /&gt;
* invert current value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* another boolean variable value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Numeric variables (Integer or Decimal):'''&lt;br /&gt;
* fixed value (including any available [[Magic text]])&lt;br /&gt;
* random value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* mathematical expression that can include any existing numeric or boolean variable as well as any available numeric [[Magic text]] and some mathematical functions (list and syntax included)&lt;br /&gt;
&lt;br /&gt;
* in addition, Integer type variables have 2 other kinds of settings: adding or subtracting 1 to current value (same as mathematical expression 'my_integer_variable +/- 1' but more convenient when incrementing/decrementing an index by step of 1)&lt;br /&gt;
&lt;br /&gt;
In expressions, booleans have value 1 if true, 0 if false. &lt;br /&gt;
Beyond the mathematical operations listed in the dropdown menu usual arithmetic operators (+ - * /) can be use and&lt;br /&gt;
:- % for modulo&lt;br /&gt;
:- ^ for power&lt;br /&gt;
:- logical operators (&amp;amp;&amp;amp; for &amp;quot;and&amp;quot;, || for &amp;quot;or&amp;quot;) where the operands can be booleans or numbers (0 is false, any non-zero is true) and the boolean result is converted to number (there is no &amp;quot;not&amp;quot; operator but there is a not() function shown in the list of available functions)&lt;br /&gt;
:-  comparisons between numbers (&amp;lt; = != &amp;gt;) where again the boolean result is converted to number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For String variables:'''&lt;br /&gt;
* fixed value (including concatenated string variables contents as well as any available [[Magic text]] or empty string to clear the variable content)&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1844</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1844"/>
		<updated>2024-02-05T14:53:54Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Boolean */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Variables can be used to store values (numbers, text strings and true/false conditions). These values can be set in the Set Variable Action. Variables can be used throughout the app as Triggers and Conditions, and can be used for controlling specific Macrodroid and system settings.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''''' An introduction video is available here '''''&lt;br /&gt;
https://www.youtube.com/watch?v=0V_EcyhxrpA&amp;amp;t=1s&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Global / Local Variables &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Local ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Local variables are specific to an individual macro. You should use a local variable when the value is only required in that individual macro. Local variables are accessed via the edit macro screen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Global variables are available throughout the application from any Macro. You should use global variables when you need to store a value between more than a single macro. The list of global variables can be accessed via the Variables tile on the home screen. From this screen you can add, delete and change the value of a global variable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Standard Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
allows 2 states: True or False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Integer ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Decimal ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison. Sientific notation as 1.3E-2 may be used.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Data Structure Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Array ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of values with associated index variables. For example if you wanted to store a count for each day of the month you could create an array called dayOfMonthCount and have a series of entries such as dayOfWeekCount[1] = 5, dayOfWeekCount[2] = 2 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dictionary ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of key value pairs. For example if you wanted to store a count for each day of the week you could create a dictionary called dayOfWeekCount and have a series of entries such as dayOfWeekCount [monday] = 1, dayOfWeekCount [tuesday] = 3 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1843</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1843"/>
		<updated>2024-02-05T14:53:36Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Integer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Variables can be used to store values (numbers, text strings and true/false conditions). These values can be set in the Set Variable Action. Variables can be used throughout the app as Triggers and Conditions, and can be used for controlling specific Macrodroid and system settings.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''''' An introduction video is available here '''''&lt;br /&gt;
https://www.youtube.com/watch?v=0V_EcyhxrpA&amp;amp;t=1s&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Global / Local Variables &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Local ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Local variables are specific to an individual macro. You should use a local variable when the value is only required in that individual macro. Local variables are accessed via the edit macro screen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Global variables are available throughout the application from any Macro. You should use global variables when you need to store a value between more than a single macro. The list of global variables can be accessed via the Variables tile on the home screen. From this screen you can add, delete and change the value of a global variable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Standard Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
type allows 2 states: True or False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Integer ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Decimal ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison. Sientific notation as 1.3E-2 may be used.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Data Structure Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Array ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of values with associated index variables. For example if you wanted to store a count for each day of the month you could create an array called dayOfMonthCount and have a series of entries such as dayOfWeekCount[1] = 5, dayOfWeekCount[2] = 2 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dictionary ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of key value pairs. For example if you wanted to store a count for each day of the week you could create a dictionary called dayOfWeekCount and have a series of entries such as dayOfWeekCount [monday] = 1, dayOfWeekCount [tuesday] = 3 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1842</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1842"/>
		<updated>2024-02-05T14:53:20Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Decimal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Variables can be used to store values (numbers, text strings and true/false conditions). These values can be set in the Set Variable Action. Variables can be used throughout the app as Triggers and Conditions, and can be used for controlling specific Macrodroid and system settings.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''''' An introduction video is available here '''''&lt;br /&gt;
https://www.youtube.com/watch?v=0V_EcyhxrpA&amp;amp;t=1s&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Global / Local Variables &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Local ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Local variables are specific to an individual macro. You should use a local variable when the value is only required in that individual macro. Local variables are accessed via the edit macro screen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Global variables are available throughout the application from any Macro. You should use global variables when you need to store a value between more than a single macro. The list of global variables can be accessed via the Variables tile on the home screen. From this screen you can add, delete and change the value of a global variable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Standard Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
type allows 2 states: True or False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Integer ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Decimal ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison. Sientific notation as 1.3E-2 may be used.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Data Structure Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Array ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of values with associated index variables. For example if you wanted to store a count for each day of the month you could create an array called dayOfMonthCount and have a series of entries such as dayOfWeekCount[1] = 5, dayOfWeekCount[2] = 2 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dictionary ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of key value pairs. For example if you wanted to store a count for each day of the week you could create a dictionary called dayOfWeekCount and have a series of entries such as dayOfWeekCount [monday] = 1, dayOfWeekCount [tuesday] = 3 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1841</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Variables&amp;diff=1841"/>
		<updated>2024-02-05T14:52:59Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* String */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Variables can be used to store values (numbers, text strings and true/false conditions). These values can be set in the Set Variable Action. Variables can be used throughout the app as Triggers and Conditions, and can be used for controlling specific Macrodroid and system settings.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''''' An introduction video is available here '''''&lt;br /&gt;
https://www.youtube.com/watch?v=0V_EcyhxrpA&amp;amp;t=1s&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Global / Local Variables &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Local ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Local variables are specific to an individual macro. You should use a local variable when the value is only required in that individual macro. Local variables are accessed via the edit macro screen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Global variables are available throughout the application from any Macro. You should use global variables when you need to store a value between more than a single macro. The list of global variables can be accessed via the Variables tile on the home screen. From this screen you can add, delete and change the value of a global variable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Standard Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
type allows 2 states: True or False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Integer ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Decimal ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
type is to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison. Sientific notation as 1.3E-2 may be used.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Data Structure Variable Types&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
=== Array ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of values with associated index variables. For example if you wanted to store a count for each day of the month you could create an array called dayOfMonthCount and have a series of entries such as dayOfWeekCount[1] = 5, dayOfWeekCount[2] = 2 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dictionary ===&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #ACC8E5; color: #112A46; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
stores a series of key value pairs. For example if you wanted to store a count for each day of the week you could create a dictionary called dayOfWeekCount and have a series of entries such as dayOfWeekCount [monday] = 1, dayOfWeekCount [tuesday] = 3 etc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Magic_text:Wifi/cell_signal_strength&amp;diff=1157</id>
		<title>Magic text:Wifi/cell signal strength</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Magic_text:Wifi/cell_signal_strength&amp;diff=1157"/>
		<updated>2023-11-01T16:33:15Z</updated>

		<summary type="html">&lt;p&gt;Dm114: Clarified some minor points&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre style=&amp;quot;background-color: #EEEEEE; color: Black; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;The Wifi/Cell tower signal strength (written as [wifi_strength] and [cell_signal_strength]) can be used for example to determine the strength of the signal between your device and the router/tower (this can vary depending on the thickness of walls, the distance to the router/tower and several other various factors).&lt;br /&gt;
The scale of these values can be confusing : they range from -127 to 0 which might not be obvious on how to use.&lt;br /&gt;
The better the strength, the &lt;br /&gt;
closer you will be to 0 the weaker the strength the closer you will be to -127: if you are standing next to the source, you'd typically be around -35. If you have a weak connection to a cell tower, you'd get around -110 to -115.&lt;br /&gt;
-127 means you are not connected to the source you are trying to measure. 2147483647 means the magic text broke for some reason..&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #AC2424; color: white; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Triggers&lt;br /&gt;
Regular interval (Interval: 00:00:30)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color: #1665B0; color: white; border-radius: 10px; padding: 10px; font-family: 'Courier New', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;Actions&lt;br /&gt;
IF (compare values([wifi_strength] &amp;lt; -80))&lt;br /&gt;
   Connect  to network (wifi1)&lt;br /&gt;
      &amp;lt;span style=&amp;quot;background-color: green;&amp;quot;&amp;gt;Wifi connected (wifi2)&amp;lt;/span&amp;gt;&lt;br /&gt;
   Connect to network (wifi2)&lt;br /&gt;
      &amp;lt;span style=&amp;quot;background-color: green;&amp;quot;&amp;gt;Wifi connected (wifi1)&amp;lt;/span&amp;gt;&lt;br /&gt;
End if&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: green; color: white; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Constraints&lt;br /&gt;
Geofence (Inside area : home)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: teal; color: white; border-radius: 10px; padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
Local variables&lt;br /&gt;
No variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=989</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=989"/>
		<updated>2023-05-17T11:19:19Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. ALL the constraint conditions have to be TRUE for the [[Actions|action]] to execute.&lt;br /&gt;
&lt;br /&gt;
If you need a more sophisticated logic, you can link the constraints with logical operators:&lt;br /&gt;
* '''AND''' (by default)&lt;br /&gt;
ALL constraint conditions below this operator have to be TRUE. If no other logical operators are needed, this one is not necessary&lt;br /&gt;
* '''OR'''&lt;br /&gt;
AT LEAST ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''XOR''' (XOR = eXclusive OR)&lt;br /&gt;
ONE AND ONLY ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''NOT'''&lt;br /&gt;
NEGATION of the constraint condition attached i.e. the constraint has NOT to be TRUE for the action to execute.&lt;br /&gt;
&lt;br /&gt;
All these constraints and operators can be nested to get even more sophisticated conditions.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=841</id>
		<title>Action: Set Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=841"/>
		<updated>2023-04-04T10:46:48Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows you to set the value of a specific MacroDroid variable.&lt;br /&gt;
&lt;br /&gt;
As explained in the [[Variables]] section, variables are divided into '''2 categories''' and '''4 types'''. Whatever category or type, their value/content is never reset and remains, even after device reboot. They are identified by a '''name''' given at creation time ''(see below)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Naming:'''&lt;br /&gt;
&lt;br /&gt;
Every variable is identified by its name. This name can be made of any set of character. To facilitate maintainability, the name should relate the content or purpose of the named variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&lt;br /&gt;
&lt;br /&gt;
Every variable can be either '''local''' or '''global'''.&lt;br /&gt;
* A '''local variable''' belongs to the macro it has been created into. It can only be used inside this macro. Its name must be unique inside the macro it belongs to&lt;br /&gt;
* A '''global variable''' can be accessed and used from any macro. Its name must be unique among all the 'global' variables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Type:'''&lt;br /&gt;
&lt;br /&gt;
A variable belongs to 1 of the 4 following types: '''Boolean, Integer, Decimal''' or '''String'''.&lt;br /&gt;
*'''Boolean''' type allows 2 states: True or False&lt;br /&gt;
*'''Integer''' type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''Decimal''' type is to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''String''' type contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). ''HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.''&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Set variable&amp;quot; action''' allows to store a specific value to a given variable. This variable has to be selected among all the available variables or created by selecting the first item of the list called ''[New Variable]''. In this case, you'll be asked what category, name and type have to be assigned to this new variable ''(see above)''.&lt;br /&gt;
&lt;br /&gt;
According to its type ''(see above)'', you can choose a value or method to be assigned to among a list of methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Boolean variables:'''&lt;br /&gt;
* False or True value&lt;br /&gt;
* invert current value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* another boolean variable value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Numeric variables (Integer or Decimal):'''&lt;br /&gt;
* fixed value (including any available [[Magic text]])&lt;br /&gt;
* random value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* mathematical expression that can include any existing numeric or boolean variable as well as any available numeric [[Magic text]] and some mathematical functions (list and syntax included)&lt;br /&gt;
&lt;br /&gt;
* in addition, Integer type variables have 2 other kinds of settings: adding or subtracting 1 to current value (same as mathematical expression 'my_integer_variable +/- 1' but more convenient when incrementing/decrementing an index by step of 1)&lt;br /&gt;
&lt;br /&gt;
In expressions, booleans have value 1 if true, 0 if false&lt;br /&gt;
and beyond usual arithmetic operators (+ - * /) you can use&lt;br /&gt;
:- % for modulo&lt;br /&gt;
:- ^ for power&lt;br /&gt;
:- logical operators (&amp;amp;&amp;amp; for &amp;quot;and&amp;quot;, || for &amp;quot;or&amp;quot;) where the operands can be booleans or numbers (0 is false, any non-zero is true) and the boolean result is converted to number (there is no &amp;quot;not&amp;quot; operator but there is a not() function shown in the list of available functions)&lt;br /&gt;
:-  comparisons between numbers (&amp;lt; = != &amp;gt;) where again the boolean result is converted to number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For String variables:'''&lt;br /&gt;
* fixed value (including concatenated string variables contents as well as any available [[Magic text]] or empty string to clear the variable content)&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=840</id>
		<title>Action: Set Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=840"/>
		<updated>2023-03-30T02:28:51Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows you to set the value of a specific MacroDroid variable.&lt;br /&gt;
&lt;br /&gt;
As explained in the [[Variables]] section, variables are divided into '''2 categories''' and '''4 types'''. Whatever category or type, their value/content is never reset and remains, even after device reboot. They are identified by a '''name''' given at creation time ''(see below)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Naming:'''&lt;br /&gt;
&lt;br /&gt;
Every variable is identified by its name. This name can be made of any set of character. To facilitate maintainability, the name should relate the content or purpose of the named variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&lt;br /&gt;
&lt;br /&gt;
Every variable can be either '''local''' or '''global'''.&lt;br /&gt;
* A '''local variable''' belongs to the macro it has been created into. It can only be used inside this macro. Its name must be unique inside the macro it belongs to&lt;br /&gt;
* A '''global variable''' can be accessed and used from any macro. Its name must be unique among all the 'global' variables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Type:'''&lt;br /&gt;
&lt;br /&gt;
A variable belongs to 1 of the 4 following types: '''Boolean, Integer, Decimal''' or '''String'''.&lt;br /&gt;
*'''Boolean''' type allows 2 states: True or False&lt;br /&gt;
*'''Integer''' type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''Decimal''' type is to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''String''' type contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). ''HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.''&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Set variable&amp;quot; action''' allows to store a specific value to a given variable. This variable has to be selected among all the available variables or created by selecting the first item of the list called ''[New Variable]''. In this case, you'll be asked what category, name and type have to be assigned to this new variable ''(see above)''.&lt;br /&gt;
&lt;br /&gt;
According to its type ''(see above)'', you can choose a value or method to be assigned to among a list of methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Boolean variables:'''&lt;br /&gt;
* False or True value&lt;br /&gt;
* invert current value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* another boolean variable value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Numeric variables (Integer or Decimal):'''&lt;br /&gt;
* fixed value&lt;br /&gt;
* random value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* mathematical expression that can include any existing numeric or boolean variable as well as any available numeric [[Magic text]] and some mathematical functions (list and syntax included)&lt;br /&gt;
&lt;br /&gt;
* in addition, Integer type variables have 2 other kinds of settings: adding or subtracting 1 to current value (same as mathematical expression 'my_integer_variable +/- 1' but more convenient when incrementing/decrementing an index by step of 1)&lt;br /&gt;
&lt;br /&gt;
In expressions, booleans have value 1 if true, 0 if false&lt;br /&gt;
and beyond usual arithmetic operators (+ - * /) you can use&lt;br /&gt;
:- % for modulo&lt;br /&gt;
:- ^ for power&lt;br /&gt;
:- logical operators (&amp;amp;&amp;amp; for &amp;quot;and&amp;quot;, || for &amp;quot;or&amp;quot;) where the operands can be booleans or numbers (0 is false, any non-zero is true) and the boolean result is converted to number (there is no &amp;quot;not&amp;quot; operator but there is a not() function shown in the list of available functions)&lt;br /&gt;
:-  comparisons between numbers (&amp;lt; = != &amp;gt;) where again the boolean result is converted to number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For String variables:'''&lt;br /&gt;
* fixed value (including concatenated string variables contents as well as any available [[Magic text]] or empty string to clear the variable content)&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=839</id>
		<title>Action: Set Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=839"/>
		<updated>2023-03-30T02:26:49Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows you to set the value of a specific MacroDroid variable.&lt;br /&gt;
&lt;br /&gt;
As explained in the [[Variables]] section, variables are divided into '''2 categories''' and '''4 types'''. Whatever category or type, their value/content is never reset and remains, even after device reboot. They are identified by a '''name''' given at creation time ''(see below)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Naming:'''&lt;br /&gt;
&lt;br /&gt;
Every variable is identified by its name. This name can be made of any set of character. To facilitate maintainability, the name should relate the content or purpose of the named variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&lt;br /&gt;
&lt;br /&gt;
Every variable can be either '''local''' or '''global'''.&lt;br /&gt;
* A '''local variable''' belongs to the macro it has been created into. It can only be used inside this macro. Its name must be unique inside the macro it belongs to&lt;br /&gt;
* A '''global variable''' can be accessed and used from any macro. Its name must be unique among all the 'global' variables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Type:'''&lt;br /&gt;
&lt;br /&gt;
A variable belongs to 1 of the 4 following types: '''Boolean, Integer, Decimal''' or '''String'''.&lt;br /&gt;
*'''Boolean''' type allows 2 states: True or False&lt;br /&gt;
*'''Integer''' type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''Decimal''' type is to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''String''' type contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). ''HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.''&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Set variable&amp;quot; action''' allows to store a specific value to a given variable. This variable has to be selected among all the available variables or created by selecting the first item of the list called ''[New Variable]''. In this case, you'll be asked what category, name and type have to be assigned to this new variable ''(see above)''.&lt;br /&gt;
&lt;br /&gt;
According to its type ''(see above)'', you can choose a value or method to be assigned to among a list of methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Boolean variables:'''&lt;br /&gt;
* False or True value&lt;br /&gt;
* invert current value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* another boolean variable value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Numeric variables (Integer or Decimal):'''&lt;br /&gt;
* fixed value&lt;br /&gt;
* random value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* mathematical expression that can include any existing numeric or boolean variable as well as any available numeric [[Magic text]] and some mathematical functions (list and syntax included)&lt;br /&gt;
&lt;br /&gt;
* in addition, Integer type variables have 2 other kinds of settings: adding or subtracting 1 to current value (same as mathematical expression 'my_integer_variable +/- 1' but more convenient when incrementing/decrementing an index by step of 1)&lt;br /&gt;
&lt;br /&gt;
In expressions, booleans have value 1 if true, 0 if false&lt;br /&gt;
and beyond usual arithmetic operators (+ - * /) you can use&lt;br /&gt;
:- % for modulo&lt;br /&gt;
:- ^ for power&lt;br /&gt;
:- logical operators (&amp;amp;&amp;amp; for &amp;quot;and&amp;quot;, || for &amp;quot;or&amp;quot;) where the operands can be booleans or numbers (0 is false, any non-zero is true) and the boolean result is converted to number (there is no &amp;quot;not&amp;quot; operator but there is a not() function shown in the list of available functions)&lt;br /&gt;
:-  comparisons between numbers (&amp;lt;= &amp;lt; == != &amp;gt; &amp;gt;=) where again the boolean result is converted to number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For String variables:'''&lt;br /&gt;
* fixed value (including concatenated string variables contents as well as any available [[Magic text]] or empty string to clear the variable content)&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=838</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=838"/>
		<updated>2023-03-29T20:23:56Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+Schematic way variables interact between Macros and Action blocks&lt;br /&gt;
!width=&amp;quot;10&amp;quot;|Step #&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|Where from&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|Kind of variable&lt;br /&gt;
!width=&amp;quot;400&amp;quot;|When&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Macro&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Local&amp;lt;br/&amp;gt;Input&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|2&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|Action block&lt;br /&gt;
|-&lt;br /&gt;
|Input&amp;lt;br/&amp;gt;Working&amp;lt;br/&amp;gt;Output&lt;br /&gt;
|Action block process&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Output&amp;lt;br/&amp;gt;Local&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Macro&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=837</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=837"/>
		<updated>2023-03-06T19:10:28Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Kinds of variables used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+Schematic way variables interact between Macros and Action blocks&lt;br /&gt;
!width=&amp;quot;10&amp;quot;|Step #&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|Where from&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|Kind of variable&lt;br /&gt;
!width=&amp;quot;400&amp;quot;|When&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Macro&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Local&amp;lt;br/&amp;gt;Input&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|2&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|Action block&lt;br /&gt;
|-&lt;br /&gt;
|Input&amp;lt;br/&amp;gt;Working&amp;lt;br/&amp;gt;Output&lt;br /&gt;
|Action block process&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Output&amp;lt;br/&amp;gt;Local&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Macro&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=836</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=836"/>
		<updated>2023-03-06T19:00:41Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Kinds of variables used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Schematic way variables interact between Macros and Action blocks:&amp;lt;/b&amp;gt;&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;10&amp;quot;|Step #&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|Where from&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|Kind of variable&lt;br /&gt;
!width=&amp;quot;300&amp;quot;|When&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Macro&lt;br /&gt;
|Local&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|2&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|Action block&lt;br /&gt;
|Input&lt;br /&gt;
|-&lt;br /&gt;
|Input&amp;lt;br/&amp;gt;Working&amp;lt;br/&amp;gt;Output&lt;br /&gt;
|Action block process&lt;br /&gt;
|-&lt;br /&gt;
|Output&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Macro&lt;br /&gt;
|Local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=835</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=835"/>
		<updated>2023-03-06T18:53:37Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Kinds of variables used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+Schematic way variables interact between Macros and Action blocks&lt;br /&gt;
!width=&amp;quot;10&amp;quot;|Step #&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|Where from&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|Kind of variable&lt;br /&gt;
!width=&amp;quot;300&amp;quot;|When&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Macro&lt;br /&gt;
|Local&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|2&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|Action block&lt;br /&gt;
|Input&lt;br /&gt;
|-&lt;br /&gt;
|Input&amp;lt;br/&amp;gt;Working&amp;lt;br/&amp;gt;Output&lt;br /&gt;
|Action block process&lt;br /&gt;
|-&lt;br /&gt;
|Output&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Call configuration time&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Macro&lt;br /&gt;
|Local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=834</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=834"/>
		<updated>2023-03-06T13:15:26Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=833</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=833"/>
		<updated>2023-03-06T13:14:51Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action Blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=832</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=832"/>
		<updated>2023-03-06T13:07:44Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;500&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action Blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=831</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=831"/>
		<updated>2023-03-06T12:39:32Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;300&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action Blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component applied to all actions&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; update calling macro's local variables&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=830</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=830"/>
		<updated>2023-03-06T12:37:22Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, Action blocks are functions.&lt;br /&gt;
Below is a table that better describes the main differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;300&amp;quot;|Capabilities&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Macros&lt;br /&gt;
!width=&amp;quot;80&amp;quot;|Action Blocks&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component to apply to all actions?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; update calling macro's local variables?&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=829</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=829"/>
		<updated>2023-03-06T12:31:09Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Differences between an action block and a macro? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, action blocks are functions.&lt;br /&gt;
But below is a table that better describes the differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|A Macro&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|An Action Block&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch?	&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Triggers not available&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger&amp;quot;?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component to apply to all actions?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can create, read &amp;amp; update global variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; update calling macro's local variables?&lt;br /&gt;
|N/A&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include Input variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Working variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include Output variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=828</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=828"/>
		<updated>2023-03-06T12:22:16Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Kinds of variables used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Action blocks work with their own set of variables (plus Global ones if necessary) whose values can be passed from/to the calling macro.&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, action blocks are functions.&lt;br /&gt;
But below is a table that better describes the differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|A Macro&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|An Action Block&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch?	&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Triggers not available&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger?”&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component to apply to all actions?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; edit global variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include local variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include input variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include those new “working variables?”&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include output variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=827</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=827"/>
		<updated>2023-03-06T12:19:24Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Kinds of variables used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
Working variables are used to make all kinds of calculations/comparisons inside the action block, like any variable according to its type. The only difference with Input and Output ones is that they &amp;lt;b&amp;gt;do not appear&amp;lt;/b&amp;gt; in the variables list when configuring the call, as they are not useful to the calling macro.&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, action blocks are functions.&lt;br /&gt;
But below is a table that better describes the differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|A Macro&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|An Action Block&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch?	&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Triggers not available&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger?”&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component to apply to all actions?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; edit global variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include local variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include input variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include those new “working variables?”&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include output variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=826</id>
		<title>Action Blocks</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action_Blocks&amp;diff=826"/>
		<updated>2023-03-06T12:11:20Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* Kinds of variables used */Added content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Action blocks allow you to group related actions together that can then be called from elsewhere as a single action (the &amp;quot;Action Block&amp;quot; action). &lt;br /&gt;
&lt;br /&gt;
The action blocks feature can be accessed from the &amp;quot;Action Blocks&amp;quot; home screen tile. Pressing this will take you to a list of currently defined action blocks (or an empty list if you haven't defined any yet). From this list you can press the + button to add a new action block.&lt;br /&gt;
&lt;br /&gt;
Each action block must be given a unique name and contain at least one action. A description is optional and you can also specify input and/or output parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== When to Use ==&lt;br /&gt;
&lt;br /&gt;
The main reason to use action blocks is to minimize duplicated blocks of actions throughout your macros.&lt;br /&gt;
&lt;br /&gt;
In some cases you may have common repeated functionality spread throughout multiple macros, for example you may set the brightness low and volume to zero at night time (using day/time trigger) in one macro. You may also wish to do the same elsewhere in another macro (for example using a location trigger when you are at the cinema). By grouping these actions into an action block you can call just a single action to invoke the action block. If you later decide to tweak these settings then you can just update the action block and avoid updating the settings in multiple places.&lt;br /&gt;
&lt;br /&gt;
== Kinds of variables used ==&lt;br /&gt;
&lt;br /&gt;
Three kinds of variables can be used inside an action block: Input, Output and Working ones. Each one can be of any type (boolean, integer, decimal, string, array/dictionary).&lt;br /&gt;
&lt;br /&gt;
All these variables are implicitly local and their lifetime is limited to action block execution. Their default values (see below) will be restored at the end of the execution so it is not possible to retreive previous values from a previous run (except when using Global variables).&lt;br /&gt;
&lt;br /&gt;
== Input and Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
For more advanced use cases, action blocks allow you the option to pass in input parameters and return output parameters. In this way an action block may be used in a similar way to a function in computer programming.&lt;br /&gt;
&lt;br /&gt;
For example suppose you wanted to convert from Celsius to Fahrenheit from within multiple macros. You could create an action block to do this that will take in an input parameter in Celsius and return an output parameter in Fahrenheit. The input parameters are available as local variables anywhere it makes sense to read a value. For example you can access the local variable in a pop up message, or in an expression when setting another variable value. The output variables are available as local variables anywhere it makes sense to set the value. For example in the set variable action you can assign to any output parameter.&lt;br /&gt;
&lt;br /&gt;
Each input parameter will specify a default value and this value will be set in the case where you run a local test or if you do not specify an input value when calling the action block from a macro. Likewise all output parameters define a default value. In the case that the action block doesn't set an explicit value on an output parameter, it's default value will be returned.&lt;br /&gt;
&lt;br /&gt;
When calling the action block you can specify what values will be passed in as input parameters and assign variables (either local or global) to capture the returned output parameters. You can also ignore any or all return parameters if you desire.&lt;br /&gt;
&lt;br /&gt;
== Differences between an action block and a macro?==&lt;br /&gt;
A quick explanation might be: Macros are programs, action blocks are functions.&lt;br /&gt;
But below is a table that better describes the differences.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|&lt;br /&gt;
!width=&amp;quot;100&amp;quot;|A Macro&lt;br /&gt;
!width=&amp;quot;150&amp;quot;|An Action Block&lt;br /&gt;
|-	&lt;br /&gt;
|Has a disabling switch?	&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can be categorized?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Has a trigger component?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Triggers can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Triggers not available&lt;br /&gt;
|-&lt;br /&gt;
|Has an action set component?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can include “Wait For Trigger?”&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be grouped into condition sets?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Actions can be constrained individually?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Has a constraint set component to apply to all actions?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can read &amp;amp; edit global variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include local variables?&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Can include input variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include those new “working variables?”&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|Can include output variables?&lt;br /&gt;
|No&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_Text_Manipulation&amp;diff=791</id>
		<title>Action: Text Manipulation</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_Text_Manipulation&amp;diff=791"/>
		<updated>2022-04-05T12:43:21Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action can be used to perform basic string manipulation on a text string.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Note'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The replace text and extract text functions support the use of regex.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Substring'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Returns a sub-section of the text defined by the supplied start and end indexes. The first character starts at index 0 and the last index is excluded. (To get the first character use values 0 and 1.)&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;hello i am using macrodroid app&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
To obtain the word Macrodroid we will use the initial position 17 and last position 27 and as a result we will have the value &amp;quot;Macrodroid&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Replace all'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Uses a regular expression to replace matching text with the supplied new text.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Source text = Hello, how are you?.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
the text to replace is &amp;quot;hello&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
the new text is &amp;quot;hi&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
The end result will be, &amp;quot;hi, how are you?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Extract text'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Uses a regular expression to match and extract a section from the text.&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
My phone number is 1234567890&amp;lt;br/&amp;gt;&lt;br /&gt;
Extract the expression &amp;quot;[0-9]&amp;quot;.&lt;br /&gt;
This will give a final result of the extraction of the phone number.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Upper case'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Converts the text to all upper case characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Source text&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;Macrodroid is my app to automate my device&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Final result&lt;br /&gt;
&amp;quot;MACRODROID IS MY APP TO AUTOMATE MY DEVICE&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Lower case'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Converts the text to all lower case characters.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Source text&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;MACRODROID IS MY APP TO AUTOMATE MY DEVICE&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Final result&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;macrodroid is my app to automate my device&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;'''Trim whitespace'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Removes any leading/trailing whitespace from the text.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=730</id>
		<title>Constraint: MacroDroid Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=730"/>
		<updated>2022-01-03T12:40:48Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint can be used to allow a trigger to fire only when a MacroDroid variable is set to a particular value.&lt;br /&gt;
&lt;br /&gt;
The rules for such a constraint to be TRUE are the same as for 'If clause' [[Actions|action]].&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=729</id>
		<title>Constraint: MacroDroid Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=729"/>
		<updated>2022-01-03T12:39:26Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint can be used to allow a trigger to fire only when a MacroDroid variable is set to a particular value.&lt;br /&gt;
&lt;br /&gt;
The rules for such a constraint to be TRUE are the same as for [[Actions|action]] If clause action.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=728</id>
		<title>Constraint: MacroDroid Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=728"/>
		<updated>2022-01-03T12:12:31Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint can be used to allow a trigger to fire only when a MacroDroid variable is set to a particular value.&lt;br /&gt;
&lt;br /&gt;
The rules for such a constraint to be TRUE are the same as for [[Action:If_clause]] If clause action.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=727</id>
		<title>Constraint: MacroDroid Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_MacroDroid_Variable&amp;diff=727"/>
		<updated>2022-01-03T12:05:33Z</updated>

		<summary type="html">&lt;p&gt;Dm114: Added info about rules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint can be used to allow a trigger to fire only when a MacroDroid variable is set to a particular value.&lt;br /&gt;
&lt;br /&gt;
The rules for such a constraint to be TRUE are the same as for [url=https://macrodroidforum.com/wiki/index.php/Action:_If_clause] If clause[/url] action.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=694</id>
		<title>Action: Set Variable</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_Set_Variable&amp;diff=694"/>
		<updated>2021-09-19T15:01:58Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows you to set the value of a specific MacroDroid variable.&lt;br /&gt;
&lt;br /&gt;
As explained in the [[Variables]] section, variables are divided into '''2 categories''' and '''4 types'''. Whatever category or type, their value/content is never reset and remains, even after device reboot. They are identified by a '''name''' given at creation time ''(see below)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Naming:'''&lt;br /&gt;
&lt;br /&gt;
Every variable is identified by its name. This name can be made of any set of character. To facilitate maintainability, the name should relate the content or purpose of the named variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&lt;br /&gt;
&lt;br /&gt;
Every variable can be either '''local''' or '''global'''.&lt;br /&gt;
* A '''local variable''' belongs to the macro it has been created into. It can only be used inside this macro. Its name must be unique inside the macro it belongs to&lt;br /&gt;
* A '''global variable''' can be accessed and used from any macro. Its name must be unique among all the 'global' variables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Type:'''&lt;br /&gt;
&lt;br /&gt;
A variable belongs to 1 of the 4 following types: '''Boolean, Integer, Decimal''' or '''String'''.&lt;br /&gt;
*'''Boolean''' type allows 2 states: True or False&lt;br /&gt;
*'''Integer''' type is to store positive or negative numbers without decimal part, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''Decimal''' type is to store any positive or negative numeric value, with or without decimal digits, in order to make any kind of mathematical calculations or comparison&lt;br /&gt;
*'''String''' type contains any kind of character (alphanumeric ones or any special ones, such as line feed/carriage return/new line or emojis). ''HINT: an individual string variable can hold up to 500,000 characters, however it is advisable to avoid very long strings where possible. If you should use strings of great length it is recommended to clear them when finished with.''&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Set variable&amp;quot; action''' allows to store a specific value to a given variable. This variable has to be selected among all the available variables or created by selecting the first item of the list called ''[New Variable]''. In this case, you'll be asked what category, name and type have to be assigned to this new variable ''(see above)''.&lt;br /&gt;
&lt;br /&gt;
According to its type ''(see above)'', you can choose a value or method to be assigned to among a list of methods:&lt;br /&gt;
&lt;br /&gt;
'''For Boolean variables:'''&lt;br /&gt;
* False or True value&lt;br /&gt;
* invert current value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* another boolean variable value&lt;br /&gt;
&lt;br /&gt;
'''For Numeric variables (Integer or Decimal):'''&lt;br /&gt;
* fixed value&lt;br /&gt;
* random value&lt;br /&gt;
* prompt at execution time&lt;br /&gt;
* mathematical expression that can include any existing numeric or boolean variable as well as any available numeric [[Magic text]] and some mathematical functions (list and syntax included)&lt;br /&gt;
* in addition, Integer type variables have 2 other kinds of settings: adding or subtracting 1 to current value (same as mathematical expression 'my_integer_variable +/- 1' but more convenient when incrementing/decrementing an index by step of 1)&lt;br /&gt;
&lt;br /&gt;
'''For String variables:'''&lt;br /&gt;
* fixed value (including concatenated string variables contents as well as any available [[Magic text]] or empty string to clear the variable content)&lt;br /&gt;
* prompt at execution time&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=688</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=688"/>
		<updated>2021-07-30T11:03:05Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. ALL the constraint conditions have to be TRUE for the [[Actions|action]] to execute.&lt;br /&gt;
&lt;br /&gt;
If you need a more sophisticated logic, you can link the constraints with logical operators:&lt;br /&gt;
* '''AND''' (by default)&lt;br /&gt;
All constraint conditions below this operator have to be TRUE. If no other logical operators are needed, this one is not necessary&lt;br /&gt;
* '''OR'''&lt;br /&gt;
AT LEAST ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''XOR''' (XOR = eXclusive OR)&lt;br /&gt;
ONE AND ONLY ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''NOT'''&lt;br /&gt;
NEGATION of the constraint condition attached i.e. the constraint has NOT to be TRUE for the action to execute.&lt;br /&gt;
&lt;br /&gt;
All these constraints and operators can be nested to get even more sophisticated conditions.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=682</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=682"/>
		<updated>2021-07-21T23:32:21Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. ALL the constraint conditions have to be TRUE for the action to execute (see [[Actions]]).&lt;br /&gt;
&lt;br /&gt;
If you need a more sophisticated logic, you can link the constraints with logical operators:&lt;br /&gt;
* '''AND''' (by default)&lt;br /&gt;
All constraint conditions below this operator have to be TRUE. If no other logical operators are needed, this one is not necessary&lt;br /&gt;
* '''OR'''&lt;br /&gt;
AT LEAST ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''XOR''' (XOR = eXclusive OR)&lt;br /&gt;
ONE AND ONLY ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''NOT'''&lt;br /&gt;
NEGATION of the constraint condition attached i.e. the constraint has NOT to be TRUE for the action to execute.&lt;br /&gt;
&lt;br /&gt;
All these constraints and operators can be nested to get even more sophisticated conditions.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=681</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=681"/>
		<updated>2021-07-19T13:25:28Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. ALL the constraint conditions have to be TRUE for the action to execute (see [[Actions]]).&lt;br /&gt;
&lt;br /&gt;
If you need a more sophisticated logic, you can link the constraints with logical operators:&lt;br /&gt;
* '''AND''' (by default)&lt;br /&gt;
All constraint conditions below this operator have to be TRUE&lt;br /&gt;
* '''OR'''&lt;br /&gt;
AT LEAST ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''XOR''' (XOR = eXclusive OR)&lt;br /&gt;
ONE AND ONLY ONE of the constraint conditions below this operator has to be TRUE&lt;br /&gt;
* '''NOT'''&lt;br /&gt;
NEGATION of the constraint condition attached i.e. the constraint has NOT to be TRUE for the action to execute.&lt;br /&gt;
&lt;br /&gt;
All these constraints and operators can be nested to get even more sophisticated conditions.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=680</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=680"/>
		<updated>2021-07-19T13:05:52Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. ALL the constraint conditions have to be TRUE for the action to execute (see [[Actions]]).&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=679</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=679"/>
		<updated>2021-07-19T12:53:17Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. ALL the constraint conditions have to be TRUE for the [[Actions: Actions|action]] to execute.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=678</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=678"/>
		<updated>2021-07-19T12:47:47Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;br /&gt;
&lt;br /&gt;
When several constraints are used, they are linked by an implicit AND i.e. all the constraint conditions have to be TRUE for the action to execute.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=677</id>
		<title>Constraint: AND / OR / XOR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_XOR_/_NOT&amp;diff=677"/>
		<updated>2021-07-19T12:38:50Z</updated>

		<summary type="html">&lt;p&gt;Dm114: Created page with &amp;quot;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.  To add child constraint(s) tap the constraint in the edit...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=676</id>
		<title>Constraints</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=676"/>
		<updated>2021-07-19T12:38:23Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* List of Constraints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Constraints are optional and can be used to allow or prevent a macro/action from running based on certain conditions.&lt;br /&gt;
&lt;br /&gt;
Constraints can be placed on macros to allow or prevent the entire macro firing based on the set condition(s). You can also add constraints directly to individual triggers and actions from the 'Edit Macro' screen, by clicking on the trigger/action and selecting &amp;quot;Add constraint&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A constraint is evaluated at the point a trigger fires or action runs and a macro/action will only run if the &amp;lt;strong&amp;gt;constraint condition is true.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default if adding more than one constraint to a macro they will be combined with an AND condition (e.g. all added constraints must be true). This can be changed in the dropdown in the constraints title to an OR condition. In this case only one of the added constraints needs to be true for the macro to run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Nesting constraints&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need more sophisticated logic applied to constraint there is a special AND/OR/XOR/NOT constraint that can be used. Any constraints nested under the logic constraint will have that logic operator applied. It's also possible to nest multiple logic constraints to create complex logic. For example:&lt;br /&gt;
&lt;br /&gt;
 AND&lt;br /&gt;
  | - Constraint 1&lt;br /&gt;
  | - OR&lt;br /&gt;
      | - Constraint 2&lt;br /&gt;
      | - Constraint 3&lt;br /&gt;
&lt;br /&gt;
In the above example, Constraint 1 must always be true '''AND''' at least one of (Constraint 2 '''OR''' Constraint 3) must be true.&lt;br /&gt;
&lt;br /&gt;
== List of Constraints ==&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Airplane Mode|Airplane Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: AND / OR / XOR / NOT|AND / OR / XOR / NOT]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Application Running|Application Running]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Rotate|Auto Rotate]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Sync|Auto Sync]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Level|Battery Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Saver State|Battery Saver State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Temperature|Battery Temperature]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Bluetooth State|Bluetooth State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Brightness|Brightness]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Calendar Entry|Calendar Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Call State|Call State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Cell Towers|Cell Towers]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Dark Mode|Dark Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Month|Day of the Month]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Week|Day of the Week]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Facing|Device Facing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Locked/Unlocked|Device Locked/Unlocked]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Orientation|Device Orientation]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Geofence|Geofence (Location)]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: GPS State|GPS State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Headphone Connection|Headphone Connection]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Is Roaming|Is Roaming]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Light Sensor|Light Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Location Mode|Location Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Enabled/Disabled|Macro(s) Enabled/Disabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Invoked/Not invoked Recently|Macro(s) Invoked/Not invoked Recently]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Mode|MacroDroid Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Variable|MacroDroid Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Data On/Off|Mobile Data On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Service Status|Mobile Service Status]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Month of the Year|Month of the Year]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Music Active|Music Active]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: NFC State|NFC State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Present|Notification Present]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Volume|Notification Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Phone Ringing|Phone Ringing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Power Connected|Power Connected]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Priority Mode / Do Not Disturb|Priority Mode / Do Not Disturb]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Proximity Sensor|Proximity Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Ringer Volume|Ringer Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Roaming Enabled|Roaming Enabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Rooted Device|Rooted Device]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Screen On/Off|Screen On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Speakerphone On/Off|Speakerphone On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Stopwatch|Stopwatch]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Sunrise/Sunset|Sunrise/Sunset]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time of Day|Time of Day]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time Since Boot|Time Since Boot]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Torch On/Off|Torch On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Trigger Fired|Trigger Fired]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Volume Level|Volume Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: VPN State|VPN State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi HotSpot State|Wifi HotSpot State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi State|Wifi State]]&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_NOT&amp;diff=675</id>
		<title>Constraint: AND / OR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_NOT&amp;diff=675"/>
		<updated>2021-07-19T12:37:50Z</updated>

		<summary type="html">&lt;p&gt;Dm114: Replaced by AND/OR/XOR/NOT page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=674</id>
		<title>Constraints</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=674"/>
		<updated>2021-07-19T11:09:49Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* List of Constraints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Constraints are optional and can be used to allow or prevent a macro/action from running based on certain conditions.&lt;br /&gt;
&lt;br /&gt;
Constraints can be placed on macros to allow or prevent the entire macro firing based on the set condition(s). You can also add constraints directly to individual triggers and actions from the 'Edit Macro' screen, by clicking on the trigger/action and selecting &amp;quot;Add constraint&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A constraint is evaluated at the point a trigger fires or action runs and a macro/action will only run if the &amp;lt;strong&amp;gt;constraint condition is true.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default if adding more than one constraint to a macro they will be combined with an AND condition (e.g. all added constraints must be true). This can be changed in the dropdown in the constraints title to an OR condition. In this case only one of the added constraints needs to be true for the macro to run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Nesting constraints&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need more sophisticated logic applied to constraint there is a special AND/OR/XOR/NOT constraint that can be used. Any constraints nested under the logic constraint will have that logic operator applied. It's also possible to nest multiple logic constraints to create complex logic. For example:&lt;br /&gt;
&lt;br /&gt;
 AND&lt;br /&gt;
  | - Constraint 1&lt;br /&gt;
  | - OR&lt;br /&gt;
      | - Constraint 2&lt;br /&gt;
      | - Constraint 3&lt;br /&gt;
&lt;br /&gt;
In the above example, Constraint 1 must always be true '''AND''' at least one of (Constraint 2 '''OR''' Constraint 3) must be true.&lt;br /&gt;
&lt;br /&gt;
== List of Constraints ==&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Airplane Mode|Airplane Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: AND / OR / NOT|AND / OR / XOR / NOT]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Application Running|Application Running]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Rotate|Auto Rotate]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Sync|Auto Sync]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Level|Battery Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Saver State|Battery Saver State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Temperature|Battery Temperature]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Bluetooth State|Bluetooth State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Brightness|Brightness]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Calendar Entry|Calendar Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Call State|Call State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Cell Towers|Cell Towers]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Dark Mode|Dark Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Month|Day of the Month]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Week|Day of the Week]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Facing|Device Facing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Locked/Unlocked|Device Locked/Unlocked]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Orientation|Device Orientation]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Geofence|Geofence (Location)]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: GPS State|GPS State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Headphone Connection|Headphone Connection]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Is Roaming|Is Roaming]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Light Sensor|Light Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Location Mode|Location Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Enabled/Disabled|Macro(s) Enabled/Disabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Invoked/Not invoked Recently|Macro(s) Invoked/Not invoked Recently]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Mode|MacroDroid Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Variable|MacroDroid Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Data On/Off|Mobile Data On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Service Status|Mobile Service Status]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Month of the Year|Month of the Year]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Music Active|Music Active]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: NFC State|NFC State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Present|Notification Present]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Volume|Notification Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Phone Ringing|Phone Ringing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Power Connected|Power Connected]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Priority Mode / Do Not Disturb|Priority Mode / Do Not Disturb]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Proximity Sensor|Proximity Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Ringer Volume|Ringer Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Roaming Enabled|Roaming Enabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Rooted Device|Rooted Device]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Screen On/Off|Screen On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Speakerphone On/Off|Speakerphone On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Stopwatch|Stopwatch]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Sunrise/Sunset|Sunrise/Sunset]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time of Day|Time of Day]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time Since Boot|Time Since Boot]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Torch On/Off|Torch On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Trigger Fired|Trigger Fired]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Volume Level|Volume Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: VPN State|VPN State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi HotSpot State|Wifi HotSpot State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi State|Wifi State]]&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=673</id>
		<title>Constraints</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=673"/>
		<updated>2021-07-19T11:08:41Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* List of Constraints */Adding XOR constraint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Constraints are optional and can be used to allow or prevent a macro/action from running based on certain conditions.&lt;br /&gt;
&lt;br /&gt;
Constraints can be placed on macros to allow or prevent the entire macro firing based on the set condition(s). You can also add constraints directly to individual triggers and actions from the 'Edit Macro' screen, by clicking on the trigger/action and selecting &amp;quot;Add constraint&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A constraint is evaluated at the point a trigger fires or action runs and a macro/action will only run if the &amp;lt;strong&amp;gt;constraint condition is true.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default if adding more than one constraint to a macro they will be combined with an AND condition (e.g. all added constraints must be true). This can be changed in the dropdown in the constraints title to an OR condition. In this case only one of the added constraints needs to be true for the macro to run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Nesting constraints&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need more sophisticated logic applied to constraint there is a special AND/OR/XOR/NOT constraint that can be used. Any constraints nested under the logic constraint will have that logic operator applied. It's also possible to nest multiple logic constraints to create complex logic. For example:&lt;br /&gt;
&lt;br /&gt;
 AND&lt;br /&gt;
  | - Constraint 1&lt;br /&gt;
  | - OR&lt;br /&gt;
      | - Constraint 2&lt;br /&gt;
      | - Constraint 3&lt;br /&gt;
&lt;br /&gt;
In the above example, Constraint 1 must always be true '''AND''' at least one of (Constraint 2 '''OR''' Constraint 3) must be true.&lt;br /&gt;
&lt;br /&gt;
== List of Constraints ==&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Airplane Mode|Airplane Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: AND / OR / XOR / NOT|AND / OR / XOR / NOT]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Application Running|Application Running]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Rotate|Auto Rotate]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Sync|Auto Sync]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Level|Battery Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Saver State|Battery Saver State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Temperature|Battery Temperature]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Bluetooth State|Bluetooth State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Brightness|Brightness]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Calendar Entry|Calendar Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Call State|Call State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Cell Towers|Cell Towers]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Dark Mode|Dark Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Month|Day of the Month]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Week|Day of the Week]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Facing|Device Facing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Locked/Unlocked|Device Locked/Unlocked]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Orientation|Device Orientation]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Geofence|Geofence (Location)]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: GPS State|GPS State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Headphone Connection|Headphone Connection]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Is Roaming|Is Roaming]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Light Sensor|Light Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Location Mode|Location Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Enabled/Disabled|Macro(s) Enabled/Disabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Invoked/Not invoked Recently|Macro(s) Invoked/Not invoked Recently]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Mode|MacroDroid Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Variable|MacroDroid Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Data On/Off|Mobile Data On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Service Status|Mobile Service Status]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Month of the Year|Month of the Year]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Music Active|Music Active]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: NFC State|NFC State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Present|Notification Present]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Volume|Notification Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Phone Ringing|Phone Ringing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Power Connected|Power Connected]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Priority Mode / Do Not Disturb|Priority Mode / Do Not Disturb]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Proximity Sensor|Proximity Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Ringer Volume|Ringer Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Roaming Enabled|Roaming Enabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Rooted Device|Rooted Device]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Screen On/Off|Screen On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Speakerphone On/Off|Speakerphone On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Stopwatch|Stopwatch]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Sunrise/Sunset|Sunrise/Sunset]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time of Day|Time of Day]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time Since Boot|Time Since Boot]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Torch On/Off|Torch On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Trigger Fired|Trigger Fired]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Volume Level|Volume Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: VPN State|VPN State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi HotSpot State|Wifi HotSpot State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi State|Wifi State]]&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_If_clause&amp;diff=621</id>
		<title>Action: If clause</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_If_clause&amp;diff=621"/>
		<updated>2021-06-28T15:20:37Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows to execute a set of subsequent actions according to specific condition(s).&lt;br /&gt;
&lt;br /&gt;
The possible conditions are the same as constraints (see [[Constraints]]) and are tested in exactly the same way, with logical connectors 'AND' (default one) or 'OR' in case of multiple conditions.&lt;br /&gt;
&lt;br /&gt;
When the condition depends on the content of string variable, there are 4 ways to test it:&lt;br /&gt;
* '''=''' (equal sign) means that the '''whole content''' of the string variable has to be equal to the whole set of typed characters&lt;br /&gt;
* '''!=''' means that the content of the string variable has to be unequal (i.e. different) to the set of typed characters&lt;br /&gt;
* '''Contains''' means that the content of the string variable has to contain the whole set of typed character. For instance, enter the word ''information'' to match with a string variable containing the text: ''Here are the '''information'''s you asked for...''&lt;br /&gt;
* '''Excludes''' means that the content of the string variable has not to contain the typed text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The wildcards '*' and '?' have the following meaning:&lt;br /&gt;
* '''*''' stands for any number of character (from 0 to any, same as '.*' in Regex)&lt;br /&gt;
* '''?''' is for 1 and only 1 mandatory character (same as '.{1}' in Regex).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tick the box '''Enter regular expression matching''' if the typed text follows Regex syntax, far more powerful than plain text with or without wildcards (for advanced users).&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Action:_If_clause&amp;diff=620</id>
		<title>Action: If clause</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Action:_If_clause&amp;diff=620"/>
		<updated>2021-06-28T14:43:20Z</updated>

		<summary type="html">&lt;p&gt;Dm114: Created page with &amp;quot;This action allows to execute a set of subsequent actions according to specific condition(s).  The possible conditions are the same as constraints (see Constraints: List of...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This action allows to execute a set of subsequent actions according to specific condition(s).&lt;br /&gt;
&lt;br /&gt;
The possible conditions are the same as constraints (see [[Constraints: List of Constraints|List of Constraints]]) and are tested in exactly the same way, with logical connectors 'AND' (default one) or 'OR' in case of multiple conditions.&lt;br /&gt;
&lt;br /&gt;
When the condition depends on the content of string variable, there are 4 ways to test it:&lt;br /&gt;
* '''=''' (equal sign) means that the '''whole content''' of the string variable has to be equal to the whole set of typed characters&lt;br /&gt;
* '''!=''' means that the content of the string variable has to be unequal (i.e. different) to the set of typed characters&lt;br /&gt;
* '''Contains''' means that the content of the string variable has to contain the whole set of typed character. For instance, enter the word ''information'' to match with a string variable containing the text: ''Here are the '''information'''s you asked for...''&lt;br /&gt;
* '''Excludes''' means that the content of the string variable has not to contain the typed text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The wildcards '*' and '?' have the following meaning:&lt;br /&gt;
* '''*''' stands for any number of character (from 0 to any, same as '.*' in Regex)&lt;br /&gt;
* '''?''' is for 1 and only 1 mandatory character (same as '.{1}' in Regex).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tick the box '''Enter regular expression matching''' if the typed text follows Regex syntax, far more powerful than plain text with or without wildcards (for advanced users).&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Actions&amp;diff=619</id>
		<title>Actions</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Actions&amp;diff=619"/>
		<updated>2021-06-28T13:48:42Z</updated>

		<summary type="html">&lt;p&gt;Dm114: /* List of Actions */Added 'if clause' action&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An action is something your device can do when a macro runs. A macro must have at least one action to be valid.&lt;br /&gt;
&lt;br /&gt;
== List of Actions ==&lt;br /&gt;
&lt;br /&gt;
[[Action: Airplane Mode On/Off|Airplane Mode On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Alarm Clock|Alarm Clock]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Ambient Display|Ambient Display]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Android Shortcut|Android Shortcut]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Android Wear|Android Wear]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Answer Call|Answer Call]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Autosync On/Off|Autosync On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Battery Saver|Battery Saver]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Bluetooth Configure|Bluetooth Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Bluetooth Tethering|Bluetooth Tethering]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Brightness|Brightness]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Calendar - Add Event|Calendar - Add Event]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Call Reject|Call Reject]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Camera Enable/Disable|Camera Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Cancel Macro Actions|Cancel Macro Actions]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Car Mode|Car Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear App Data|Clear App Data]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Call Log|Clear Call Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Log|Clear Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Clear Notifications|Clear Notifications]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Configure App Notifications|Configure App Notifications]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Confirm Next|Confirm Next]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Connectivity Check|Connectivity Check]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Contact Via App|Contact Via App]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Control Media|Control Media]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Dark Theme|Dark Theme]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Daydream/Screensaver On|Daydream/Screensaver On]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Delete Macro|Delete Macro]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Demo Mode|Demo Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Dim Screen|Dim Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Disable MacroDroid|Disable MacroDroid]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Display Dialog|Display Dialog]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Display Notification|Display Notification]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Empty Action|Empty Action]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Enable/Disable Category|Enable/Disable Category]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Enable/Disable Macro|Enable/Disable Macro]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Expand/Collapse Status Bar|Expand/Collapse Status Bar]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Export Macros|Export Macros]]&lt;br /&gt;
&lt;br /&gt;
[[Action: File Operations V2|File Operations V2]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Fill Clipboard|Fill Clipboard]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Font Scale|Font Scale]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Force Location Update|Force Location Update]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Force Screen Rotation|Force Screen Rotation]]&lt;br /&gt;
&lt;br /&gt;
[[Action: GPS Enable/Disable|GPS Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Heads-up Enable/Disable|Heads-up Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: HotSpot On/Off|HotSpot On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: If clause|If clause]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Immersive Mode|Immersive Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Invert Colours|Invert Colours]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Keep Device Awake|Keep Device Awake]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Keyboard - Set Default|Keyboard - Set Default]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Keyboard Prompt|Keyboard Prompt]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Kill Application|Kill Application]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Kill Background Processes|Kill Background Processes]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch and Press|Launch and Press]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch Application|Launch Application]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch Home Screen|Launch Home Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Launch Shortcut|Launch Shortcut]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Locale/Tasker Plugin|Locale/Tasker Plugin]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Location Mode|Location Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Log Event|Log Event]]&lt;br /&gt;
&lt;br /&gt;
[[Action: MacroDroid Drawer|MacroDroid Drawer]]&lt;br /&gt;
&lt;br /&gt;
[[Action: MacroDroid Settings|MacroDroid Settings]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Macro run|Macro run]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Make Call|Make Call]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Mobile Data On/Off|Mobile Data On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: NFC Enable/Disable|NFC Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Notification Interaction|Notification Interaction]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Notification LED Enable/Disable|Notification LED Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open Call Log|Open Call Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open File|Open File]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open Last Photo|Open Last Photo]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open MacroDroid Log|Open MacroDroid Log]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Open Website / HTTP GET|Open Website / HTTP GET]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Option Dialog|Option Dialog]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Play/Stop Sound|Play/Stop Sound]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Popup Message|Popup Message]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Press Back Button|Press Back Button]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Priority Mode / Do Not Disturb|Priority Mode / Do Not Disturb]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Reboot/Power Off|Reboot/Power Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Record Microphone|Record Microphone]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Restore Hidden Notifications|Restore Hidden Notifications]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Ringtone Configure|Ringtone Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Say Current Time|Say Current Time]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Screen On/Off|Screen On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Secure Settings|Secure Settings]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Send Email|Send Email]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Send Intent|Send Intent]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Send SMS|Send SMS]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Location Update Rate|Set Location Update Rate]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set MacroDroid Icon|Set MacroDroid Icon]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set MacroDroid Mode|Set MacroDroid Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set MacroDroid Notification Text|Set MacroDroid Notification Text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Notification Sound|Set Notification Sound]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Quick Settings Tile State|Set Quick Settings Tile State]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Screen Lock|Set Screen Lock]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Screen Timeout|Set Screen Timeout]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Variable|Set Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Set Wallpaper|Set Wallpaper]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Share Last Photo|Share Last Photo]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Share Location|Share Location]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Shell Script|Shell Script]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Silent - Vibrate Off|Silent - Vibrate Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Speak Text|Speak Text]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Speakerphone On/Off|Speakerphone On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Stopwatch|Stopwatch]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Sync Account|Sync Account]]&lt;br /&gt;
&lt;br /&gt;
[[Action: System Setting|System Setting]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Take Picture|Take Picture]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Take Screenshot|Take Screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Text Manipulation|Text Manipulation]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Torch On/Off|Torch On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Touch Screen|Touch Screen]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Tweet|Tweet]]&lt;br /&gt;
&lt;br /&gt;
[[Action: UDP Command|UDP Command]]&lt;br /&gt;
&lt;br /&gt;
[[Action: UI Interaction|UI Interaction]]&lt;br /&gt;
&lt;br /&gt;
[[Action: USB Tethering|USB Tethering]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Vibrate|Vibrate]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Vibrate Enable/Disable|Vibrate Enable/Disable]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Voice Search|Voice Search]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Volume Change|Volume Change]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Volume Up/Down|Volume Up/Down]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Wait Before Next Action|Wait Before Next Action]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Wait Until Trigger|Wait Until Trigger]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Widget Button Modify|Widget Button Modify]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Wifi Configure|Wifi Configure]]&lt;br /&gt;
&lt;br /&gt;
[[Action: Write to File|Write to File]]&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Trigger:_Battery_Level&amp;diff=617</id>
		<title>Trigger: Battery Level</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Trigger:_Battery_Level&amp;diff=617"/>
		<updated>2021-06-22T20:19:59Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When the battery % increases or decreases, this trigger will fire. The trigger can be configured to trigger on any change or when the battery % increases or decreases to a certain level.&lt;br /&gt;
&lt;br /&gt;
'''Example Usage'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Battery level = 15% ==&amp;gt; battery saving enabled.&amp;lt;br/&amp;gt;&lt;br /&gt;
Battery level = 30% ==&amp;gt; battery saving disabled.&lt;br /&gt;
&lt;br /&gt;
''HINT: Don't forget that a trigger fires once at the exact time the event occurs. So, in the above examples, it will only fire when battery level goes down from 16% to 15% or up from 14% to 15% (respectively from 31% to 30% or from 29% to 30%)''&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_Application_Running&amp;diff=616</id>
		<title>Constraint: Application Running</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_Application_Running&amp;diff=616"/>
		<updated>2021-06-22T20:05:26Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint can be used to allow/prevent functionality from running, depending whether one or more apps are or are not currently running.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_NOT&amp;diff=615</id>
		<title>Constraint: AND / OR / NOT</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraint:_AND_/_OR_/_NOT&amp;diff=615"/>
		<updated>2021-06-22T19:59:38Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This constraint may be used to perform logical operators on any child constraints that are added to this constraint.&lt;br /&gt;
&lt;br /&gt;
To add child constraint(s) tap the constraint in the edit macro screen and select the 'add constraint' option. All child constraints will appear indented directly under this constraint.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=614</id>
		<title>Constraints</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Constraints&amp;diff=614"/>
		<updated>2021-06-22T19:58:17Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Constraints are optional and can be used to allow or prevent a macro/action from running based on certain conditions.&lt;br /&gt;
&lt;br /&gt;
Constraints can be placed on macros to allow or prevent the entire macro firing based on the set condition(s). You can also add constraints directly to individual triggers and actions from the 'Edit Macro' screen, by clicking on the trigger/action and selecting &amp;quot;Add constraint&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A constraint is evaluated at the point a trigger fires or action runs and a macro/action will only run if the &amp;lt;strong&amp;gt;constraint condition is true.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default if adding more than one constraint to a macro they will be combined with an AND condition (e.g. all added constraints must be true). This can be changed in the dropdown in the constraints title to an OR condition. In this case only one of the added constraints needs to be true for the macro to run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Nesting constraints&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need more sophisticated logic applied to constraint there is a special AND/OR/XOR/NOT constraint that can be used. Any constraints nested under the logic constraint will have that logic operator applied. It's also possible to nest multiple logic constraints to create complex logic. For example:&lt;br /&gt;
&lt;br /&gt;
 AND&lt;br /&gt;
  | - Constraint 1&lt;br /&gt;
  | - OR&lt;br /&gt;
      | - Constraint 2&lt;br /&gt;
      | - Constraint 3&lt;br /&gt;
&lt;br /&gt;
In the above example, Constraint 1 must always be true '''AND''' at least one of (Constraint 2 '''OR''' Constraint 3) must be true.&lt;br /&gt;
&lt;br /&gt;
== List of Constraints ==&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Airplane Mode|Airplane Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: AND / OR / NOT|AND / OR / NOT]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Application Running|Application Running]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Rotate|Auto Rotate]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Auto Sync|Auto Sync]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Level|Battery Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Saver State|Battery Saver State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Battery Temperature|Battery Temperature]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Bluetooth State|Bluetooth State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Brightness|Brightness]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Calendar Entry|Calendar Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Call State|Call State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Cell Towers|Cell Towers]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Dark Mode|Dark Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Month|Day of the Month]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Day of the Week|Day of the Week]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Facing|Device Facing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Locked/Unlocked|Device Locked/Unlocked]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Device Orientation|Device Orientation]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Geofence|Geofence (Location)]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: GPS State|GPS State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Headphone Connection|Headphone Connection]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Is Roaming|Is Roaming]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Light Sensor|Light Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Location Mode|Location Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Enabled/Disabled|Macro(s) Enabled/Disabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Macro(s) Invoked/Not invoked Recently|Macro(s) Invoked/Not invoked Recently]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Mode|MacroDroid Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: MacroDroid Variable|MacroDroid Variable]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Data On/Off|Mobile Data On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Mobile Service Status|Mobile Service Status]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Month of the Year|Month of the Year]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Music Active|Music Active]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: NFC State|NFC State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Present|Notification Present]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Notification Volume|Notification Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Phone Ringing|Phone Ringing]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Power Connected|Power Connected]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Priority Mode / Do Not Disturb|Priority Mode / Do Not Disturb]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Proximity Sensor|Proximity Sensor]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Ringer Volume|Ringer Volume]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Roaming Enabled|Roaming Enabled]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Rooted Device|Rooted Device]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Screen On/Off|Screen On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Speakerphone On/Off|Speakerphone On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Stopwatch|Stopwatch]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Sunrise/Sunset|Sunrise/Sunset]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time of Day|Time of Day]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Time Since Boot|Time Since Boot]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Torch On/Off|Torch On/Off]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Trigger Fired|Trigger Fired]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Volume Level|Volume Level]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: VPN State|VPN State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi HotSpot State|Wifi HotSpot State]]&lt;br /&gt;
&lt;br /&gt;
[[Constraint: Wifi State|Wifi State]]&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Trigger:_Empty_Trigger&amp;diff=613</id>
		<title>Trigger: Empty Trigger</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Trigger:_Empty_Trigger&amp;diff=613"/>
		<updated>2021-06-22T19:44:57Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This trigger will never fire of its own accord. Its main use is for macros that are designed to be invoked from other macros using the [[Action: Macro run|Macro run]] action.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
	<entry>
		<id>https://macrodroidforum.com/wiki/index.php?title=Trigger:_Empty_Trigger&amp;diff=612</id>
		<title>Trigger: Empty Trigger</title>
		<link rel="alternate" type="text/html" href="https://macrodroidforum.com/wiki/index.php?title=Trigger:_Empty_Trigger&amp;diff=612"/>
		<updated>2021-06-22T19:40:11Z</updated>

		<summary type="html">&lt;p&gt;Dm114: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This trigger will never fire of its own accord. Its main use is for macros that are designed to be invoked from other macros using the [[Action:Macro run]] action.&lt;/div&gt;</summary>
		<author><name>Dm114</name></author>
	</entry>
</feed>