3 votes

Comment déterminer si un objet Java est nul ou non dans Tasker ?

Je veux une tâche Tasker qui lit les SMS d'une personne particulière et extrait certaines informations du dernier message.

Par exemple, je reçois beaucoup de messages de ma banque en raison des transactions que j'effectue. Il me suffit d'appuyer sur une touche pour connaître mon dernier solde bancaire. Normalement, j'obtiendrais le dernier SMS de ma banque et je trouverais le solde à partir de celui-ci. Je veux que Tasker fasse cela.

Je sais que Tasker peut lire les messages lorsqu'ils arrivent. Mais nous devons créer un profil qui le fasse. Ce n'est pas mon cas d'utilisation. Il s'agit plutôt d'une utilisation à la demande.

Voici la tâche que j'ai essayé de créer à cet effet :

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 

Je ne suis pas en mesure de savoir si cr est nulle ou non.

Quelle est la bonne façon de le vérifier ? Ou est-ce que c'est possible dans Tasker ?

3voto

Pryftan Points 121

Il existe deux façons de vérifier la nullité des objets Java.


La première voie, directe à partir de le guide de l'utilisateur est la vérification de l'objet Equals null :

Si

Un objet Java peut être directement référencé dans une condition. Les objets à valeur nulle sont remplacés par une représentation textuelle null .

Exemples :

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

Le problème est que le chaîne de caractères "null" répondra également à la condition. Dans votre cas, ce n'est pas un problème, mais ma deuxième méthode permet de faire la distinction entre les deux dans d'autres cas.


La seconde méthode tire parti du contrôle d'erreur intégré à Tasker. Si vous avez un objet et que vous avez besoin de vérifier s'il est nul ou non :

  1. Utiliser une action Java Function. Pour "Object or Class", utilisez l'objet en question, puis pour "Function" sélectionnez "toString {String} () "*. Enfin, assurez-vous que l'option "Continuer la tâche après une erreur" est cochée. Vous n'avez pas besoin d'une valeur de retour ici.
  2. Faites suivre la fonction d'une action If, qui teste si la variable %err est défini (ou ne l'est pas).
  3. Si %err est défini, l'objet est nul. Sinon, il n'est pas nul.

%err ne sera pas défini si l'objet est la chaîne de caractères "null", parce que "null".toString() est un code parfaitement valide.

* Si votre seule option dans la liste des fonctions est "assigner {...} ()", vous travaillez avec un type primitif - un nombre, un booléen ou un caractère. Ces types ne peuvent pas être nuls, la vérification n'est donc pas nécessaire.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X