我有一个Nativscript 5.0应用程序,需要访问平台信息(设备,屏幕)。我添加了tns核心模块platform.js,然后使用“ tns run android”重建了整个项目。
现在我收到此错误:
System.err: TypeError: Cannot read property 'getContentResolver' of undefined
tns_modules/tns-core-modules/platform/platform.js', line: 79, column: 83
此错误引用了platform.android.js中的以下代码:
Object.defineProperty(Device.prototype, "uuid", {
get: function () {
if (!this._uuid) {
var nativeApp = appModule.android.nativeApp;
this._uuid = android.provider.Settings.Secure.getString(nativeApp.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
}
return this._uuid;
},
enumerable: true,
configurable: true
});
特别是,nativeApp似乎未定义。我正在通过Android模拟器运行此代码。我在这里想念什么?我需要在某个地方显式定义操作系统以防止发生此错误吗?
谢谢
答案 0 :(得分:1)
您必须太早访问平台模块,甚至在nativeApp
实例完全初始化并可以使用之前。
您可以等到displayed
/ activityCreated
事件或任何组件的loaded
事件,以确保nativeApp
准备就绪。
答案 1 :(得分:0)
尝试获取device.uuid
时出现此错误。我设法通过使用launchEvent
使其起作用:
import { on as applicationOn, launchEvent } from 'tns-core-modules/application'
import { device } from 'tns-core-modules/platform'
applicationOn(launchEvent, () => {
// Use device.uuid here
})