Android 屏蔽蓝牙连接时的首次配对系统弹窗

连接配对密码已知且固定的蓝牙设备时,明明在代码里就可以完成配对,却依旧被系统弹出配对窗口.

这无疑是令人难受的.

所以,便尝试着去屏蔽掉这个配对窗口.

要点:

  • 中断系统发出的蓝牙配对广播
  • 需要用到ClsUtils开源框架
  • 个人测试在Android 4.4上成功拦截,在4.2上不行,也许是高版本把蓝牙配对广播设为了有序广播?

code:

public class BluetoothConnectReceiver extends BroadcastReceiver
{

 private final String TAG = "BluetoothConnectReceiver";

 @SuppressLint("NewApi")
 @Override
 public void onReceive(Context context, Intent intent)
 {

  Log.i(TAG, TAG + " -> BluetoothConnectReceiver start!");

  if (intent.getAction().equals("android.bluetooth.device.action.PAIRING_REQUEST"))
  {
   BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

   Log.i(TAG, TAG + " -> ddd");
   try
   {
    Log.i(TAG, TAG + " -> Device Name = " + btDevice.getName());

    if ("Device Name X".equals(btDevice.getName()))
    {
     abortBroadcast();
     ClsUtils.setPin(btDevice.getClass(), btDevice, "password");
     ClsUtils.createBond(btDevice.getClass(), btDevice);
     ClsUtils.cancelPairingUserInput(btDevice.getClass(), btDevice);
    }
   }
   catch (Exception e)
   {
    e.printStackTrace();
   }
  }
 }
}

通过预设的密码直接静默配对.

manifest:

<receiver android:name=".BluetoothConnectReceiver" >
   <intent-filter android:priority="1000" >
      <action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
   </intent-filter>
</receiver>

接收器的优先级设为最高1000,保证最先被广播通知.

时间: 2024-12-19 00:17:25

Android 屏蔽蓝牙连接时的首次配对系统弹窗的相关文章

【源代码】基于Android和蓝牙的单片机温度採集系统

如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 STC89C52单片机通过HC-06蓝牙模块与Android手机通信实例- 基于Android和蓝牙的单片机温度採集系统 整个project下载:http://download.csdn.net/detail/itas109/7539057 当中包含. 1.下位机电路原理图 2.下位机採集温度.控制发送.自己主动纠错代码 3.Android端接收温度并显示代码 文件截图 这个是我当年

Android使用蓝牙连接adb调试App

使用WiFi连接Android设备调试APP的教程非常多,可是项目中须要使用蓝牙进行通信.所以牵扯使用蓝牙调用adb. 1.   将电脑蓝牙与手机进行配对(控制面板->设备和打印机->加入设备) 2.   在手机上设置(设置à 很多其它无线连接à网络共享à蓝牙共享网络) 3.   PC端,设备和打印机->选择配对好的手机->右键->连接时使用->訪问点 4.   连接成功后打开CMD查询蓝牙适配器的ip 5.下载应用这个不用说了.执行超级终端. 开启WiFi锁 6.执行

ansible系列4-关闭ssh首次连接时提示

在ansible配置文件中找到 /etc/ansible/ansible.cfg 方法1 在配置文件中找到 了解到问题原因为,我们了解到进行ssh连接时,可以使用-o参数将StrictHostKeyChecking设置为no,使用ssh连接时避免首次连接时让输入yes/no部分的提示.通过查看ansible.cfg配置文件,发现如下行: [ssh_connection] # ssh arguments to use # Leaving off ControlPersist will result

Android 蓝牙开发之搜索、配对、连接、通信大全

        蓝牙( Bluetooth®):是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据 交换(使用2.4-2.485GHz的ISM波段的UHF无线电波).蓝牙设备最多可以同时和7个其它蓝牙设备建立连接,进 行通信,当然并不是每一个蓝牙都可以达到最大值.下面,我们从蓝牙的基本概念开始,一步一步开始了解蓝牙. 基本概念: 安卓平台提供对蓝牙的通讯栈的支持,允许设别和其他的设备进行无线传输数据.应用程序层通过安卓API来调用蓝牙的相关功 能,这些API使程序无线连接

Android蓝牙连接自动测试工具

蓝牙连接自动测试工具 1.需求产生 开发不按着需求走都是耍流氓且浪费时间.此工具的需求产生是研发人员在开发产品时涉及到蓝牙驱动和安卓蓝牙两个东西.但是呢,蓝牙不太稳定,那么工作来了.就需要研发人员一边开发,一遍测试(用产品的安卓app一直按连接,产品设备重启,安卓app再连接蓝牙,再重启产品设备...........一直循环这个过程),这个过程是无聊且没意义的.我们作为程序员肯定是要偷懒的啊.因此就有了此工具的诞生. 2.功能介绍 1.除首次手动连接所需设备蓝牙外,设备重启后能自动重连 2.连接

处理android 经典蓝牙发送文件时接收包的问题

需求:android 经典蓝牙发送文件,发送端支持暂停操作(变态!!!!),还想要断点续传(更变态!!!) 大致实现:   client端发送定长包,文件首包包头(固定长度)包含此文件标示(名称,文件流总长度等),并且要处理好socket缓存区 溢出的问题,防止出现丢包. server端从socket读取数据时按照定长包读取,长度不够等下组数据来,长度长了截掉,每个数据流进行包头判断,前一文件未收完的情况下,收到包头数据流,就丢弃,开始接受新的文件流. case点:包头判断的过程:有两种方式:

android bluetooth蓝牙移植

http://blog.csdn.net/zhengmeifu/article/details/7705172 前段时间移植神念系统需要使用到bluetooth功能,现将移植过程中碰到的问题简要列一下,备忘而已. 1.内核增加配置make menuconfig -> Networking support -> Bluetooth subsystem support -->进行选择BT选项,至少选择如下几项:CONFIG_BT=yCONFIG_BT_RFCOMM=y## Bluetooth

android平台蓝牙编程

Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用android平台提供的蓝牙API去实现蓝牙设备之间的通信,蓝牙设备之间的通信主要包括了四个步骤:设置蓝牙设备.寻找局域网内可能或者匹配的设备.连接设备和设备之间的数据传输.以下是建立蓝牙连接的所需要的一些基本类: BluetoothAdapter类:代表了一个本地的蓝牙适配器.他是所有蓝牙交互的的入口点.利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个Bl

Android ble 蓝牙4.0 总结一

本文介绍Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level < 18,也是用不了蓝牙4.0的哦. 首先发一下官方的demo,有兴趣的可以过去看看:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html.android系统4.3以上,手机支持蓝牙4.0,具有搜索,配对,连接,发现服务及特征值,断开连接等功能,下载地