当我的应用或服务正在运行时,我可以使用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 catching或BluetoothAdapter的ACTION_CONNECTION_STATE_CHANGED
意图,用于连接到现有的远程个人资料,而不是新提供的本地个人。
答案 0 :(得分:0)
可以在onReceive()
中添加以下代码以启动应用。
PackageManager pm = context.getPackageManager();
Intent launchIntent = pm.getLaunchIntentForPackage("com.example.blutoothapp");
launchIntent.putExtra("some_data", "value");
context.startActivity(launchIntent);
希望这会有所帮助。