3

I want a Tasker task that reads SMS from a particular person and extracts some information out of the latest message.

For example, I get a lot of messages from my bank due to the transactions I make. At the touch of a task, I want to know my latest bank balance. Normally, I would get the latest SMS from my bank and find out the balance from it. I want Tasker to do this.

I am aware that Tasker can read messages when they arrive. But we have to make a profile that does it. This is not my use-case. It's more on-demand.

Here is the task I tried to create to that effect:

Flash Roam (10)
    A1: Java Function [ Return:cr Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ] 
    A2: If [ cr !Set ]
    A3: Flash [ Text:Ok Long:Off ] 
    A4: End If 

I am unable to ascertain if cr is null or not.

What is the correct way to check it? Or is this even possible in Tasker?

1 Answer 1

3

There are two ways you can do null checking of Java objects.


The first way, direct from the userguide, is checking of the object Equals null:

If

A Java object can be directly referenced in a condition. Null-value objects are replaced with text representation null.

Examples:

If, arr[0][0] eq 45
If, arr[0].length > 3 
If, lightlevel Equals null

The problem with this is that the string "null" will also match the condition. In your case, that's not a concern, but my second method provides a way that can distinguish between the two for other cases.


The second way takes advantage of Tasker's built-in error checking. If you have an object and need to check whether or not it's null:

  1. Use a Java Function action. For "Object or Class", use the object in question, then for "Function" select "toString {String} ()"*. Lastly, make sure "Continue Task After Error" is checked. You don't need a return value here.
  2. Follow the Function with an If action, which tests if the variable %err is set (or isn't set).
  3. If %err is set, the object is null. Otherwise, it's not null.

%err will not be set if the object is the string "null", because "null".toString() is perfectly valid code.

* If your only option in the Function list is "assign {...} ()", then you're working with a primitive type - a number, boolean, or character. Those can't be null, so checking is unnecessary.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .