热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android注册蓝牙广播无响应,uniappBroadcastReceiver广播监听无效,求解

最后还是弃用了,因为监听接收消息的时候,发现好像页面卡死了,也不知道有啥好办法,搜索不到我这边的原因是因为没有申请到动态权限

最后还是弃用了,因为监听接收消息的时候,发现好像页面卡死了,也不知道有啥好办法,

搜索不到 我这边的原因是因为没有申请到动态权限,代码如下

searchDevices() {

let BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");

let BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");

let BluetoothSocket = plus.android.importClass("android.bluetooth.BluetoothSocket");

let BluetoothReceiver = plus.android.importClass("android.bluetooth.BluetoothReceiver");

let Intent = plus.android.importClass("android.content.Intent");

let IntentFilter = plus.android.importClass("android.content.IntentFilter");

this.BAdapter = BluetoothAdapter.getDefaultAdapter();

//检查设备是否支持蓝牙

if (this.BAdapter == null) {

uni.showToast({

title: "该设备不支持蓝牙",

duration: 2000,

icon: "none"

});

return false;

} else {

// 如果没有打开蓝牙

if (!this.BAdapter.isEnabled()) {

// 打开蓝牙操作

let startBt = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

console.log(startBt);

this.mainActivity.startActivityForResult(startBt, 1000);

// this.BAdapter.enable(); //打开蓝牙

// console.log(this.BAdapter.getAddress());

// console.log(this.BAdapter.getName());

} else {

// console.log(BAdapter.isDiscovering());

// 检测当前是否在搜索蓝牙

if (this.BAdapter.isDiscovering()) {

this.BAdapter.cancelDiscovery();

}

let IntentFilter = plus.android.importClass('android.content.IntentFilter');

let filter = new IntentFilter();

if (this.btFindReceiver != null) {

try {

this.mainActivity.unregisterReceiver(this.btFindReceiver);

} catch (e) {

console.error(e);

}

this.btFindReceiver = null;

// this.BAdapter.cancelDiscovery();

}

// SDK

this.Build = plus.android.importClass("android.os.Build");

let Manifest = plus.android.importClass("android.Manifest");

// console.log(Build.VERSION.SDK_INT);

// if (Build.VERSION.SDK_INT >= 6.0) {}

let ArrPermissions = [

Manifest.permission.BLUETOOTH_ADMIN,

Manifest.permission.BLUETOOTH,

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.ACCESS_COARSE_LOCATION

]

if (!this.PermissionChecks(ArrPermissions)) {

// 如果没有权限,请求权限

this.PermissionRequest(ArrPermissions);

} else {

// 开始showtoast

uni.showLoading({

title: '蓝牙设备搜索中',

mask: false

});

filter.addAction(BluetoothDevice.ACTION_FOUND); //发现蓝牙设备

filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); //蓝牙设备绑定状态改变

filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); //蓝牙设备的状态改变

filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); //搜索完成

//filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); //开始扫描

this.btFindReceiver = null;

let that1 = this;

this.devsList = [];

this.btFindReceiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {

onReceive: function(context, intent) { //实现onReceiver回调函数

console.log('onReceive函数回调');

plus.android.importClass(context);

plus.android.importClass(intent);

let action = intent.getAction();

if (BluetoothDevice.ACTION_FOUND == action) { // 找到设备

let device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

let newDevice = {

"object": device,

"name": plus.android.invoke(device, "getName") ? plus.android.invoke(device, "getName") : '',

"address": plus.android.invoke(device, "getAddress") ? plus.android.invoke(device, "getAddress") : ''

};

that1.devsList.push(newDevice)

// console.log(plus.android.invoke(device, "getName"));

// that1.DiscoveryNewDevice(newDevice);

}

if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED == action) { // 搜索完成

console.log('搜索完成');

that1.BAdapter.cancelDiscovery();

uni.hideLoading();

uni.showToast({

title: "搜索结束",

duration: 2000,

icon: "none"

});

}

console.log('onReceive结束回调');

}

});

this.mainActivity.registerReceiver(this.btFindReceiver, filter);

this.BAdapter.startDiscovery(); //开启搜索

}

}

}



推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了如何在dotnet桌面(Windows)应用程序中添加图标。作者提到可以使用dotnet命令行工具与resource.rc文件一起使用来为标准.NET核心应用程序添加图标。作者还介绍了在创建控制台应用程序时如何编辑projeto1.csproj文件来添加图标。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • JDK8新特性详细介绍[java入门]
    本文由java零基础入门栏目为大家介绍JDK8中的一些新特性,欢迎大家来纠错指正!JDK8中的新特性主要有:1、函数式编程;2、Lambda表达式;3、函数式接口;4、方法引用;5 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
author-avatar
朴子字軒_755
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有