我正在尝试做一个应用程序,当设备的蓝牙打开时,它会显示一个吐司。即使我的应用程序没有运行,我也想这样做。所以我应该使用一个广播接收器,添加一些权限,一个意图过滤器到android清单中,并创建一个java类,但我不知道细节。
我该怎么办?我应该使用哪些权限?
发布于 2014-07-22 21:04:04
就权限而言,要检测蓝牙的状态变化,您需要将以下内容添加到AndroidManifest.xml中。
<uses-permission android:name="android.permission.BLUETOOTH" />一个示例接收器看起来像这样,您将此代码添加到您想要处理广播的位置,例如一个活动:
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive (Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
if(intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1)
== BluetoothAdapter.STATE_OFF)
// Bluetooth is disconnected, do handling here
}
}
};要使用接收器,您需要注册它。您可以执行以下操作。我在我的主活动中注册接收器。
registerReceiver(this, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));您也可以决定将其全部添加到您的AndroidManifest.xml中。这样,您就可以为接收器创建一个特殊的类,并在那里处理它。不需要注册接收器,只需创建类并将以下代码添加到AndroidManifest
<receiver
android:name=".packagename.NameOfBroadcastReceiverClass"
android:enabled="true">
<intent-filter>
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
</intent-filter>
</receiver>发布于 2014-07-22 21:11:20
您必须获得以下权限。
<uses-permission android:name="android.permission.BLUETOOTH" />你必须在接收器标签中把它写成你的意图过滤器。
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />发布于 2018-06-21 21:33:17
不幸的是,对于以API26或更高版本为目标的应用程序,声明的清单广播接收器不再工作(此处参考:https://developer.android.com/guide/components/broadcast-exceptions),但有一些例外。android.bluetooth.adapter.action.STATE_CHANGED不在该列表中。
对于蓝牙,您只能在以下位置监听更改:
ACTION_CONNECTION_STATE_CHANGED、ACTION_ACL_CONNECTED、ACTION_ACL_DISCONNECTED
https://stackoverflow.com/questions/24888023
复制相似问题