2016-03-23 14 views
1

Halihazırda kendimi doğaya aşina kılmalı ve onunla neler yapabileceğinizi anlamaya çalışıyorum. Çok ilginç bulduğum ve daha çok ilgilendiğim bir şey, yerel Android işlevlerini nasıl kullanabileceğim.Nativescript ile birlikte Android Erişilebilirlik Hizmeti'ni kullanın

Anlamak ve öğrenmek için bir meydan okuma olarak, bazı şifre yöneticileri uygulamaları gibi belirli değerlerle uygulamaların metin alanlarını doldurma olasılığını seçtim. Doğru anladım, büyük voodoo olmamalı.

Nasıl iki örnek buldum. İlki, keepass2android uygulamasından otomatik doldurma özelliği. Kaynaklar: https://keepass2android.codeplex.com/SourceControl/changeset/view/9ddc142d987880118be38ee1d69943f2809738d3#src/java/KP2ASoftkeyboard_AS/app/src/main/java/keepass2android/autofill/AutoFillService.java

Diğer numune burada bulduğu: AccessibilityNodeInfo - send text

İlk hızlı ve kirli ben android yerli fonksiyonları nativescript nasıl çalıştığını öğrenmek, app.js kesmek. Bu yüzden bir şekilde farklı olayları tetiklemek istiyorum ama sadece init tetikleniyor (şimdiye kadar bunu da anlıyorum).

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(); 

Muhtemelen android.accessibilityservice.AccessibilityService nedense çalışma olsun, farklı bir şekilde uzatılmalıdır. Ama nasıl?

OnAccessibilityEvent işlevi, yerel yazılarda tetiklenirse büyük bir sorun olur.

Düzenleme:

Ben bazı ilerlemeler kaydetmiştir. Başka bazı doğal kaynaklar ve örnekler buldum ve kodumu değiştirdim. Şimdi:

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); 

Ancak yolumdan erişebilirimAccessibilityEvent şu anda benim için açık değil. http://developer.android.com/training/accessibility/service.html

ve onAccessibilityEvent geçersiz kılma mantık yerleştirin:

+0

Bu sizin için işe yarıyor mu? Güncellenen kodu paylaşabilir misiniz? – codef0rmer

cevap

1

Bu örneğe benzer hizmetinizi (ilk kod bloğundan sınıf) kaydetmeniz gerekir.