Android 您所在的位置:网站首页 华为p40pro怎么搜索不到蓝牙设备 Android

Android

2024-03-01 01:22| 来源: 网络整理| 查看: 265

参考:

Android-蓝牙开发:解决搜索不到蓝牙设备_van久的博客-CSDN博客_android 蓝牙不能搜索

现象:

之前用java开发的一个APP,一直都是用华为的荣耀6plus来调试,运行得非常好,APP内就可以搜索蓝牙设备。但是,最后用华为P40(鸿蒙系统)来调试,就发现了一个新问题,APP内搜索不到蓝牙设备了,当然,其它功能还是正常的,比如,仍然可以连接蓝牙。

解决方法:

Android M 以上版本需要显式获取授权,附授权代码:

在AndroidManifest.xml中添加权限:

在activity中调用getPermission()方法取得权限:

/** * 解决:无法发现蓝牙设备的问题 * * 对于发现新设备这个功能, 还需另外两个权限(Android M 以上版本需要显式获取授权,附授权代码): */ private final int ACCESS_LOCATION=1; @SuppressLint("WrongConstant") private void getPermission() { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { int permissionCheck = 0; permissionCheck = this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION); permissionCheck += this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION); if (permissionCheck != PackageManager.PERMISSION_GRANTED) { //未获得权限 this.requestPermissions( // 请求授权 new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, ACCESS_LOCATION);// 自定义常量,任意整型 } } } /** * 请求权限的结果回调。每次调用 requestpermissions(string[],int)时都会调用此方法。 * @param requestCode 传入的请求代码 * @param permissions 传入permissions的要求 * @param grantResults 相应权限的授予结果:PERMISSION_GRANTED 或 PERMISSION_DENIED */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case ACCESS_LOCATION: if (hasAllPermissionGranted(grantResults)) { Log.i(TAG, "onRequestPermissionsResult: 用户允许权限"); } else { Log.i(TAG, "onRequestPermissionsResult: 拒绝搜索设备权限"); } break; } } private boolean hasAllPermissionGranted(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult == PackageManager.PERMISSION_DENIED) { return false; } } return true; }

最后,把动态获取蓝牙权限的代码放在MainActivity.java-->onCreate() 里,也就是,一启动APP就获取,这样最好。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有