实现一个Android Host 操作 Android phone的程序
代码是Android Sdk中的例子AdbTest
mApplicationContext = this.getApplicationContext();
if (mApplicationContext.getPackageManager().hasSystemFeature("android.hardware.usb.host")) {
Log.d("Shit", ">>>> FOUND !");
}
执行结果,输出 Shit >>>> FOUND,支持usb host
for (UsbDevice device : mManager.getDeviceList().values()) {
UsbInterface intf = findAdbInterface(device);
if (setAdbInterface(device, intf)) {
break;
}
}
获取到usb设备,但在setAdbInterface函数中有问题,
if(mManager.hasPermission(device) == true){
log("has access");
}else{
mManager.requestPermission(device, mPermissionIntent);
}
if (device != null && intf != null) {
UsbDeviceConnection connection = mManager.openDevice(device);
if (connection != null) {
log("open succeeded");
mManager.requestPermission(device, mPermissionIntent); //执行,后设备没有弹出窗口
UsbDeviceConnection connection = mManager.openDevice(device); //执行失败,报错
具体错误信息:
01-01 02:38:46.468: E/UsbManager(4043): exception in UsbManager.openDevice
01-01 02:38:46.468: E/UsbManager(4043): java.lang.SecurityException: User has not given permission to device UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=1060,mProductId=60416,mClass=255,mSubclass=0,mProtocol=1,mInterfaces=[Landroid.hardware.usb.UsbInterface;@4146c080]