要捕获设备连接和断开的通知,可以使用以下方法:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
// 设备连接
UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
// 处理设备连接逻辑
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
// 设备断开
UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
// 处理设备断开逻辑
}
}
}
在Manifest文件中声明BroadcastReceiver:
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, filter);
private BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
// 设备连接
UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
// 处理设备连接逻辑
} else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
// 设备断开
UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
// 处理设备断开逻辑
}
}
};
注意:在使用这两种方法之前,需要声明
权限。另外,如果您是在Service中使用上述代码,需要替换getSystemService(Context.USB_SERVICE)
为getApplicationContext().getSystemService(Context.USB_SERVICE)
。
上一篇:捕获设备检测到重复命名
下一篇:捕获shell()函数的输出