Dan*_*rov 9 usb android android-emulator
我有一些看起来像的代码
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
usbManager.getDeviceList();
Run Code Online (Sandbox Code Playgroud)
当我使用Android 5.0模拟器时,我遇到了这个崩溃:
java.lang.NullPointerException: Attempt to invoke interface method 'void android.hardware.usb.IUsbManager.getDeviceList(android.os.Bundle)' on a null object reference
at android.hardware.usb.UsbManager.getDeviceList(UsbManager.java:243)
...
Run Code Online (Sandbox Code Playgroud)
我知道官方Android模拟器没有USB支持,但我希望看到一个空的USB设备列表,而不是崩溃.
我在Android代码中达到了顶峰,而且ServiceManager服务地图没有条目"usb".Android 21堆栈中的任何内容似乎都不会处理返回的null值ServiceManager.
该代码在模拟的4.4设备上运行良好,但在5.0设备上崩溃.CPU架构似乎没有什么区别; 我试过ARM和x86.
它也适用于我尝试的所有Genymotion设备,但我需要在CentOS CI主机上运行,并且让Genymotion在CentOS上运行似乎需要进行干扰性更改.
任何修复或解决方法的想法?作为最后的手段,我可以捕获UsbManagerNPE,但它会非常糟糕,因为我也使用与之交互的第三方库UsbManager.
返回Object The service or null if the name does not exist.
根据 API,实现没有义务返回非null值。
解决方法:简单。
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
if (usbManager == null) {
Log.w("MyApp","USB Not supported");
return;
}
// Normal route
usbManager.getDeviceList();
Run Code Online (Sandbox Code Playgroud)
(我在模拟器上也遇到了与您描述的相同的问题)
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |