打开蓝牙,获得已经匹配过的列表,开发环境没问题,打包后测试有问题
开发环境:手机USB链接电脑,运行到手机或模拟器测试,可以自动打开蓝牙,并且可以获得已经匹配过的蓝牙列表。
云打包后,手机安卓apk 运行,无法打开蓝牙,列表也获取不到了。
个人初步分析可能是app的权限问题,没有使用蓝牙,但是不知道在 manifest.json 怎么加蓝牙权限
请各位同僚帮忙看下,同时希望客服也帮忙解决下。
比较着急,现在等着这个功能上线呢
附件中有测试的源码,也有打包后的APK
测试蓝牙代码如下:
<div id="app">
<ul class="mui-table-view ly-wall">
<li class="mui-table-view-cell" v-for="it in lyList" v-cloak>
{{it.name}}
</li>
</ul>
</div>
<script src="themes/js/mui.min.js"></script>
<script src="themes/js/vue.js"></script>
<script>
mui.init();
var os, vm = new Vue({
el: "#app",
data: {
lyList: []
},
methods: {
}
});
mui.plusReady(function () {
plus.navigator.closeSplashscreen();
os.openBluetooth();
setTimeout(function () {
os.getBluetoothMac();
}, 2000);
});
var main, Context, BluetoothManager, BluetoothAdapter, BManager, BAdapter, BluetoothDevice;
var device = null,
uuid = null,
bluetoothSocket = null;
os = {
//打开安卓蓝牙
openBluetooth: function () {
main = plus.android.runtimeMainActivity();
Context = plus.android.importClass("android.content.Context");
BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager); //引入相关的method函数
BAdapter = BManager.getAdapter();
plus.android.importClass(BAdapter); //引入相关的method函数,这样之后才会有isEnabled函数支持
if (!BAdapter.isEnabled()) {
BAdapter.enable();
mui.toast('蓝牙已打开');
} else {
mui.toast('蓝牙已打开');
}
},
//获得已匹配过的蓝牙设备
getBluetoothMac: function () {
var lists = BAdapter.getBondedDevices();
plus.android.importClass(lists);
var iterator = lists.iterator();
plus.android.importClass(iterator);
while (iterator.hasNext()) {
var d = iterator.next();
plus.android.importClass(d);
vm.lyList.push({
name: d.getName(),
mac: d.getAddress()
});
}
}
}
</script>