1

Currently I make myself familiar with nativescript and trying to figure out what you can do with it. One thing that I find very interesting and for which I am more interested in is how I can use native Android functions.

As challenge for understanding and learning I have picked out the possibility in apps fill in text fields with specific values like some password managers apps do. If I understand it right, it shouldn't big voodoo.

How, I found two examples. The first one is the autofill feature from the keepass2android app. Sources: https://keepass2android.codeplex.com/SourceControl/changeset/view/9ddc142d987880118be38ee1d69943f2809738d3#src/java/KP2ASoftkeyboard_AS/app/src/main/java/keepass2android/autofill/AutoFillService.java

Other sample I found here: AccessibilityNodeInfo - send text

First quick and dirty I hack the app.js, find out how the android native functions works in nativescript. So I want trigger somehow the different events but only init is triggered (so far I also understand it also).

var applicationModule = require("application");
var platform = require("platform");

var context = applicationModule.android.context;
android.accessibilityservice.AccessibilityService;

var aa = android.accessibilityservice.AccessibilityService.extend({
        init: function() {
                console.log("init()");
        },
        onInit: function() {
                console.log("onInit()");
        },
        create: function() {
                console.log("create()");
        },
        onCreate: function() {
                console.log("onCreate()");
        },
        destroy: function() {
                console.log("destroy()");
        },
        onDestroy: function() {
                console.log("onDestroy()");
        },
        accessibilityEvent: function(event) {
                console.log("accessibilityEvent");
        },
        onAccessibilityEvent: function(event) {
                console.log("onAccessibilityEvent");
        },
        interrupt: function() {
                console.log("interrupt");
        },
        onInterrupt: function() {
                console.log("interrupt");
        },
        serviceConnected: function() {
                console.log("serviceConnected");
        },
        onServiceConnected: function() {
                console.log("onServiceConnected");
        }
});

var a = new aa();

Probably android.accessibilityservice.AccessibilityService must somehow be extended in a different way, get it working. But how?

It would be a big deal if the onAccessibilityEvent function would be triggered in nativescript.

Edit:

I made some progress. Found some other nativescript sources and samples and modified my code. Now:

var applicationModule = require("application");
var platform = require("platform");
var utils = require("utils/utils");

var context = android.content.Context;

var ad = utils.ad.getApplicationContext();

var aa = ad.getSystemService(context.ACCESSIBILITY_SERVICE);

But the way, I can register onAccessibilityEvent is currently not clear for me.

Community
  • 1
  • 1
prodigy7
  • 73
  • 9

1 Answers1

1

You need to register your service (the class from your first code block) similar to this example: http://developer.android.com/training/accessibility/service.html

and place your logic in onAccessibilityEvent override.

Vladimir Enchev
  • 815
  • 7
  • 12