Я создаю приложение Nativescript с определенной обработкой на Android. Поскольку это было необходимо для инициализации плагина в методе onCreate () Android, я расширил Основное приложение Nativescript следующим образом: https://docs.nativescript.org/core-concepts/android-runtime/advanced-topics/extend-application-activity
Я также могу подтвердить, что мой пользовательский класс правильно настроен и работает после помещения логови получение метода onCreate ():
Код перед применением необходимой инициализации:
import { isAndroid } from "tns-core-modules/ui/page/page";
import * as application from "tns-core-modules/application";
declare var co;
declare var android;
declare var applicationContext;
// const context = android.content.Context;
const BleManager = co.igloohome.ble.lock.BleManager;
var utilsModule = require("tns-core-modules/utils/utils");
@JavaProxy("org.myApp.Application")
class Application extends android.app.Application {
onCreate(): void {
super.onCreate();
console.log("OnCreate() called");
}
attachBaseContext(baseContext: any) { // android.content.Context
super.attachBaseContext(baseContext);
}
}
С помощью этого кода я смог увидеть "OnCreate () звонил" в журнале иэто означает, что мое расширение работает.
Теперь я пытаюсь инициализировать SDK, и поэтому я сделал это на основе документации, например, так:
import { isAndroid } from "tns-core-modules/ui/page/page";
import * as application from "tns-core-modules/application";
declare var co;
declare var android;
declare var applicationContext;
// const context = android.content.Context;
const BleManager = co.igloohome.ble.lock.BleManager;
var utilsModule = require("tns-core-modules/utils/utils");
@JavaProxy("org.myApp.Application")
class Application extends android.app.Application {
onCreate(): void {
super.onCreate();
console.log("OnCreate() called");
//Setup Ble SDK
BleManager(utilsModule.ad.getApplicationContext()).setDebug(true)
console.log("OnCreate() end");
}
attachBaseContext(baseContext: any) { // android.content.Context
super.attachBaseContext(baseContext);
}
}
И, к сожалению, она выдает ошибку:
JS: OnCreate() called
System.err: java.lang.RuntimeException: Unable to create application org.myApp.Application: com.tns.NativeScriptException:
System.err: Calling js method onCreate failed
System.err:
System.err: Error: Trying to link invalid 'this' to a Java object
Я также могу подтвердить, что объект "BleManager" не является неопределенным. Только это, я думаю, это может быть связано с тем, что я передаю неверный контекст приложения. (Для инициализации метода требуется контекст приложения).
Как получить основной контекст приложения Android в Nativescript?