我正在使用蓝牙硬件设备,我正试图让它与我的Trigger.IO应用程序接口。看起来似乎不可能,尽管技术上应该如此。以下是我到目前为止的步骤:
使用Trigger.IO模块功能创建一个能够在Trigger.IO应用程序和本机Java代码之间成功发送和接收消息的模块
创建了一个成功与蓝牙硬件设备通信的原生Android应用程序
将我原生的Android蓝牙代码移植到我的Trigger.IO模块中
此时自定义模块包含在Trigger应用程序中并且似乎正确启动,但是当我拨打应启动蓝牙设备连接逻辑的呼叫时,我收到有关蓝牙权限的错误。我确保我的模块在AndroidManifest.xml
内具有必要的蓝牙权限,但我担心基本触发器应用程序没有所需的权限。
这些是在尝试启动蓝牙连接时在LogCat内输出的日志:
D/Forge: Native call module.startDevicePolling with task.params: {}
D/BluetoothManagerService: Message: 20
D/BluetoothManagerService: Added callback: Android.bluetooth.IBluetoothManagerCallback$Stub$Proxy@41f84218:true
W/dalvikvm: threadid=25: thread exiting with uncaught exception (group=0x41612ba8)
I/Process: Sending signal. PID: 11967 SIG: 9
E/AndroidRuntime: FATAL EXCEPTION: Incoming Data Thread
E/AndroidRuntime: Process: io.trigger.forge42a1430afae511e2a0e61231392b77b0, PID: 11967
E/AndroidRuntime: java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10230 nor current process has android.permission.BLUETOOTH.
查看部署的.APK根目录下的AndroidManfiest.xml
,看起来Trigger只拥有INTERNET和ACCESS_NETWORK_STATE的权限。其他人遇到这个?我想如果我可以获得BLUETOOTH权限进入根AndroidManifest.xml
,事情会起作用,但该文件被编码为不容易。
答案 0 :(得分:0)
我能够通过更改本地触发器android模板来解决我的问题,以便给予我所需的权限。这显然不太理想。理想的情况是让Trigger逻辑查看本机模块,派生所需的权限,并相应地更新其主AndroidManifest.xml
。
答案 1 :(得分:0)
Trigger.io确实支持模块添加权限的功能 - 请参阅Changing build configuration
总结:
android/build_steps.json
[ { "do": { "android_add_permission": { "permission": "android.permission.BLUETOOTH" } } } ]