android设置打开蓝牙时报错:java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission

这篇具有很好参考价值的文章主要介绍了android设置打开蓝牙时报错:java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我的手机是三星s10,Android12,遇到的这个问题,供参考
问题出现场景,我是最近在研究一下蓝牙相关的,找了文档学习但是触动mBluetoothAdapter.enable();开启或者打开蓝牙的时候就报了下面这个错:
开始解错:
表面提示就是需要许可证/就是权限之类的缺少,

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.studay.base.study, PID: 16798
    java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission for AttributionSource { uid = 10392, packageName = com.studay.base.study, attributionTag = null, token = android.os.BinderProxy@3a97bdd, next = null }: enable
        at android.os.Parcel.createExceptionOrNull(Parcel.java:2438)
        at android.os.Parcel.createException(Parcel.java:2422)
        at android.os.Parcel.readException(Parcel.java:2405)
        at android.os.Parcel.readException(Parcel.java:2347)
        at android.bluetooth.IBluetoothManager$Stub$Proxy.enable(IBluetoothManager.java:987)
        at android.bluetooth.BluetoothAdapter.enable(BluetoothAdapter.java:2219)
        at com.studay.base.study.bluetooth.BluetoothFragment$1.onClick(BluetoothFragment.java:85)
        at android.view.View.performClick(View.java:7792)
        at android.widget.TextView.performClick(TextView.java:16112)
        at android.view.View.performClickInternal(View.java:7769)
        at android.view.View.access$3800(View.java:910)
        at android.view.View$PerformClick.run(View.java:30218)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8751)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.BluetoothManagerService.checkPermissionForDataDelivery(BluetoothManagerService.java:5034)
        at com.android.server.BluetoothManagerService.checkConnectPermissionForDataDelivery(BluetoothManagerService.java:5052)
        at com.android.server.BluetoothManagerService.checkBluetoothPermissions(BluetoothManagerService.java:1506)
        at com.android.server.BluetoothManagerService.enable(BluetoothManagerService.java:1787)
        at android.bluetooth.IBluetoothManager$Stub.onTransact(IBluetoothManager.java:441)

然后我就顺着这个错误去网上查询资料是吧,就在清单文件里加了一堆蓝牙权限,

<!-- 蓝牙权限 -->
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />

    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="BLUETOOTH_CONNECT" />

    <!-- Required if your app derives physical location from Bluetooth
        scan results. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

但是报错是依然的,后面在代码文件加了动态申请权限才解错ok:
重点来了:在初始化的代码里加上下面这个方法就不会报错了文章来源地址https://www.toymoban.com/news/detail-539453.html

    // todo 蓝牙动态申请权限
    private void initPermission(){
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
            // Android 版本大于等于 Android12 时
            // 只包括蓝牙这部分的权限,其余的需要什么权限自己添加
            mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN);
            mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE);
            mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT);
        } else {
            // Android 版本小于 Android12 及以下版本
            mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
            mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }

        if(mPermissionList.size() > 0){
            ActivityCompat.requestPermissions(getActivity(),mPermissionList.toArray(new String[0]),1001);
        }
    }

到了这里,关于android设置打开蓝牙时报错:java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 9.0 蓝牙功能之一:蓝牙设置

    本章节记录如何构建蓝牙设置。 注意蓝牙应用必须是 System App。 LocalBluetoothManager 是操作蓝牙的主要入口。 1.通过 LocalBluetoothManager,可以获取到LocalBluetoothAdapter;CachedBluetoothDeviceManager;BluetoothEventManager、LocalBluetoothProfileManager。 2.通过 BluetoothEventManager.registerCallback 注册回调,

    2023年04月24日
    浏览(47)
  • picard安装时报错“Exception in thread “main“ java.lang.UnsupportedClassVersionError”

    最近在通过GATK所介绍的best practice流程来call SNP流程 1.1 BWA比对,获得sam文件 1.2 准备用picard来压缩排序sam文件为bam文件,并对bam文件进行去重复(duplicates marking) 这是就需要用到picard软件 按照教程网页上给的下载路径picard download | SourceForge.net,里面是2015年的1.119版本,下载

    2024年02月13日
    浏览(62)
  • maven运行时报错“java.lang.NoClassDefFoundError:sun/misc/BASE64Decoder”

    项目中用到加密jar包,单独在idea中运行项目时正常,通过mvn命令行运行时报错“java.lang.NoClassDefFoundError:sun/misc/BASE64Decoder” 搜索之后发现 sun/misc/BASE64Encoder 这个东西仅在jdk1.8以及之前的版本存在,更高版本的jdk不存在了 一翻纠结 Mac下查看已安装的jdk版本及其安装目录 查看

    2024年01月23日
    浏览(44)
  • IDEA 编译项目时报错:java: java.lang.OutOfMemoryError:GC overhead limit exceeded解决方法

    在Intellij IDEA下编译Java项目,报错:java.lang.OutOfMemoryError: …(此处忽略) GC overhead limit exceeded 错误是发生在编译阶段,而不是运行阶段。通过查询相关资料发现, 1.idea编译Java项目使用的虚拟机和idea软件自身使用的虚拟机是分开的(也就是独立的进程) 2.只需要给编译器使用的

    2024年02月05日
    浏览(42)
  • 【踩坑日记】feign调用时报错:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

    SpringCloud微服务,使用feign进行服务间的调用 服务启动后出现异常: IllegalStateException: RequestParam.value() was empty on parameter 0 非法状态异常。大概意思是:第 0 个参数绑定的 value 值为空。也就是说第 0 个参数没有正确的绑定请求的参数映射。 这个错误产生的原因是我们使用了

    2024年02月05日
    浏览(37)
  • kkFileView启动时报错Caused by: java.lang.IllegalStateException: a process with acceptString ‘socket,host=

    原因当前遇到两种情况: xshell弹窗提示“需要Xmanager软件来处理X11转发请求; 之前运行过,已经运行了libreoffice7.1,shutdown脚本未kill掉libreoffice7.1的进程。 如果是xshell弹窗提示“需要Xmanager软件来处理X11转发请求”,只需要按照提示,关闭会话属性即可解决该问题。 在连接会

    2024年02月11日
    浏览(62)
  • 最简单方法解决启动hive时报错:Exception in thread “main“ java.lang.RuntimeException: org.apache.hadoop.hdfs.serve

            相信很多人和我一样在启动完集群之后,通过“lsof -i:10000”检测是否启动成功时会遇到如下图这种情况: 等待许久依旧无法启动成功,从而DataGrip无法连接数据库。         经过回头检验发现在启动metastore后,hive检验时报错如下图: 很容易我们可以关注到:

    2024年04月29日
    浏览(69)
  • Android studio如何设置同时打开多个项目

    今天将AS升级到Android Studio Flamingo | 2022.2.1 Patch 2后,打开一个新项目后,原打开的项目就关闭了。非常不方便。于是重新设置,设置步骤记录如下: 1.菜单File-Settings New windows表示在新窗口打开项目,原打开项目不关闭。 Current window表示在同一个窗口打开新项目 ,原打开的项

    2024年02月11日
    浏览(64)
  • android报java.lang.UnsatisfiedLinkError错误大全

    1、java.lang.UnsatisfiedLinkError: method:logWrite, sig:(Lcom/tencent/mars/xlog/Xlog$XLoggerInfo;Ljava/lang/String;)V 完整错误日志如下:  检查是否项目开启了混淆,导致native方法及所在类被混淆,而找不到对应的方法。 2、java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.PeerConnectionFactory.

    2024年02月13日
    浏览(37)
  • 【Android】报错java.lang.reflect.InvocationTargetException解决办法

    结果图 原因 InvocationTargetException异常由Method.invoke(obj, args…)方法抛出。(反射异常) 当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收!!! 反射层将所有的异常都包装在一个InvocationTargetException 中,能使你区分异常的实际上是反射层的引起的一个调用失败(

    2024年01月21日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包