建立蓝牙连接后自动启动Android应用或服务?

时间:2016-05-06 04:22:50

标签: android android-bluetooth

当我的应用或服务正在运行时,我可以使用BluetoothAdapter.listenUsingRfcommWithServiceRecord(...)提供蓝牙配置文件(例如SPP,DUN或我自己的UUID)。

是否有可能在设备上始终显示此蓝牙配置文件,即使我的应用或服务未运行,并且当有人连接到此蓝牙配置文件时让Android自动启动我的应用或服务?

我可以在AndroidManifest.xml内设想这样的事情:

<receiver android:name="com.example.MyBluetoothReceiver" android:exported="true">
    <intent-filter>
        <action android:name="android.bluetooth.adapter.action.RFCOMM_ACCEPT" />
        <data android:name="My SPP Service"
              android:uuid="00001101-0000-1000-8000-00805F9B34FB" />
    </intent-filter>
</receiver>

目标是Android框架完全基于AndroidManifest.xml识别此接收器,每当打开蓝牙无线电时自动提供<data ...> - 标签中指定的蓝牙配置文件,然后无论何时进行实际连接,都要实例化并调用我的意图接收器。这与自定义网址处理程序的工作方式类似,通过向ACTION_VIEW注册CATEGORY_BROWSABLE意图,然后浏览器会调用该地图启动我的应用,即使我的应用当前未运行。

到目前为止,我能找到的最接近的通知是蓝牙状态的一般变化(无线电开/关,设备配对),例如:这里: Android Broadcast Receiver bluetooth events catchingBluetoothAdapterACTION_CONNECTION_STATE_CHANGED意图,用于连接到现有的远程个人资料,而不是新提供的本地个人。

1 个答案:

答案 0 :(得分:0)

可以在onReceive()中添加以下代码以启动应用。

PackageManager pm = context.getPackageManager();
Intent launchIntent = pm.getLaunchIntentForPackage("com.example.blutoothapp");
launchIntent.putExtra("some_data", "value");
context.startActivity(launchIntent);

希望这会有所帮助。