方式一:
//实例化IntentFilter对象
IntentFilter fiter= new IntentFilter();
filter.addAction("android.hardware.usb.action.USB_STATE");
mUsbReceiver = new USBReceiver();//自己注册的广播接收者
//注册广播接收者registerReceiver(mUsbReceiver ,filter);备注:
但是USBManager不可以点出来直接调用只能用他的String "android.hardware.usb.action.USB_STATE";
测试发现这个action生效,但不是即时生效的,因为这个action其实是监听USB是否connected,当USB connected时才会生效,有时候你插入了USB,但没connected,这个广播不会发出 .这个时候可以格式化刷机一下,我之前用这个就没有反应,后来格式化刷机了,问题得到了解决!
方式二:
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, filter);
方式三: 有没有一种即插就生效的呢
查看系统源码
监听USB的广播使用的是电池电量变化Action
Intent.ACTION_BATTERY_CHANGE
还有一种是是否是USB充电,只能是判断一下
int chargePlug = arg1.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean
acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;