2017-07-12 205 views
0

我是NativeScript的新手。 我想弄清楚如何使用蓝牙原生Api(Classic不是LE)。 我很难找到我如何与蓝牙API进行交互。Nativescript使用android

我打的第一面墙是在我的脚本代码中使用android。

对于一个组件为例,如果我这样做:

ngOnInit(): void { 
    console.info(android.os.Build.VERSION.SDK_INT) 
} 

我得到的错误:

JS:Error错误:未捕获的(在承诺):类型错误:无法读取属性 'OS' 的未定义

有什么建议吗?

+0

这听起来很愚蠢,但是,有 - 你是否在Android设备上运行示例? – pkanev

+1

由于您使用的是打字稿,我猜你没有添加平台声明,所以你应该在你的文件的顶部添加'declare const android:any;'或者你可以在tsconfig中设置''noEmitOnError“:false' .json –

+0

这些解决方案都不起作用。 @OseiFortune与你的命题我错误:操作系统的未定义 – gpasse

回答

3

要通过TypeScript向本机API访问(甚至更好的智能感知),您需要生成的声明文件。幸运的是,你没有提供这些文件,因为它们是通过tns-platform-declarations plugin

已经缴费要安装的声明做fiollwing在角项目

npm i tns-platform-declarations --save-dev 

然后创建references.d.ts与文件以下内容:

/// <reference path="./node_modules/tns-platform-declarations/ios.d.ts" /> 
/// <reference path="./node_modules/tns-platform-declarations/android.d.ts" /> 

最后修改tsconfig.json文件的内容包括以下内容:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es5", 
     "experimentalDecorators": true, 
     "lib": [ 
      "es6", 
      "dom" 
     ] 
    } 
} 

如果由于某种原因,你并不需要智能感知可以跳过这一切,只是给一个类型的Android在你*的.ts的文件开头

declare var android: any; 

不过,我会强烈推荐第一种方法,因为它会给你非常好的IntelliSense用于真正巨大的本地API

相关问题