3 votos

¿Cómo determinar si un objeto Java es nulo o no en Tasker?

Quiero una tarea de Tasker que lea los SMS de una persona determinada y extraiga alguna información del último mensaje.

Por ejemplo, recibo muchos mensajes de mi banco debido a las transacciones que hago. Al toque de una tarea, quiero saber mi último saldo bancario. Normalmente, obtengo el último SMS de mi banco y averiguo el saldo a partir de él. Quiero que Tasker haga esto.

Soy consciente de que Tasker puede leer los mensajes cuando llegan. Pero hay que hacer un perfil que lo haga. Este no es mi caso de uso. Es más bien a la carta.

Aquí está la tarea que intenté crear a tal efecto:

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 

No puedo saber si cr es nulo o no.

¿Cuál es la forma correcta de comprobarlo? ¿O es esto posible en Tasker?

3voto

Pryftan Puntos 121

Hay dos maneras de hacer la comprobación de nulos de los objetos Java.


La primera forma, directa desde la guía del usuario es la comprobación del objeto Equals null :

Si

Un objeto Java puede ser referenciado directamente en una condición. Los objetos de valor nulo se sustituyen por una representación de texto null .

Ejemplos:

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

El problema con esto es que el cadena "null" también coincidirá con la condición. En su caso, eso no es una preocupación, pero mi segundo método proporciona una manera que puede distinguir entre los dos para otros casos.


La segunda forma aprovecha la comprobación de errores integrada en Tasker. Si tienes un objeto y necesitas comprobar si es nulo o no:

  1. Utilice una acción de la función Java. Para "Objeto o Clase", utilice el objeto en cuestión, luego para "Función" seleccione "toString {String} () "*. Por último, asegúrese de que la opción "Continue Task After Error" esté marcada. No necesita un valor de retorno aquí.
  2. Sigue la función con una acción If, que comprueba si la variable %err está fijado (o no está fijado).
  3. Si %err se establece, el objeto es nulo. En caso contrario, no es nulo.

%err no se establecerá si el objeto es la cadena "null", porque "null".toString() es un código perfectamente válido.

* Si su única opción en la lista de funciones es "asignar {...} ()", entonces está trabajando con un tipo primitivo - un número, un booleano o un carácter. Estos no pueden ser nulos, por lo que la comprobación es innecesaria.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X