android的USB开发时 mUsbManager.getDeviceList()获取都为空
1.在/system/etc/permissions下的handheld_core_hardware.xml
1. <feature name="android.hardware.usb.host" />
修改AndroidManifest.xml文件,添加以下权限(很关键):
2. <uses-permission android:name="android.hardware.usb.host" />
3. <uses-permission android:name="android.hardware.usb.accessory" />
类提供的主要方法有:
- getDeviceList()
获得设备列表,返回的是一个HashMap.;
- hasPermission(UsbDevice device)
判断你的应用程序是否有接入此USB设备的权限,如果有则返回真,否则返回false.
- openDevice(UsbDevice device)
打开USB设备,以便向此USB设备发送和接受数据,返回一个关于此USB设备的连接。
- requestPermission(UsbDevice device, PendingIntent pi)
向USB设备请求临时的接入权限。
UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
for (UsbDevice device : mUsbManager.getDeviceList().values()) {
Log.e(TAG, getLineInfo()+"[ updateUsbDevices] device =" + device);
if (!isExternalPort(device)) {
continue;
}
// 获取权限
if (mUsbManager.hasPermission(device)) {
if (supportAccessory(device)) {
if (mSupportUsbDevice == null) {
mSupportUsbDevice = device;
// notify attach
if (toConnect) {
connectDevice();
}
}
Log.e(TAG, getLineInfo()+"---hasPermission");
return;
}
} else {
mUsbManager.requestPermission(device, mPermissionIntent);
Log.e(TAG, "request permission -----------2------------");
}
}