Tôi có một số mã trông giống nhưNullPointerException từ UsbManager
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
usbManager.getDeviceList();
Khi tôi sử dụng một 5,0 giả lập Android, tôi nhận được tai nạn này:
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)
...
Tôi hiểu rằng giả lập Android chính thức không có USB hỗ trợ, nhưng tôi hy vọng sẽ thấy một danh sách các thiết bị USB trống hơn là một sự cố.
Tôi đã đạt đến đỉnh điểm trong mã Android một chút và bản đồ dịch vụ của ServiceManager
không có mục nhập cho "usb"
. Không có gì trong ngăn xếp Android 21 dường như xử lý giá trị null được trả về bởi ServiceManager
.
Mã hoạt động tốt trên thiết bị 4.4 mô phỏng nhưng bị treo trên 5.0 thiết bị. Kiến trúc CPU dường như không tạo nên sự khác biệt; Tôi đã thử ARM và x86.
Nó cũng hoạt động tốt trên tất cả các thiết bị Genymotion tôi đã thử, nhưng tôi cần phải làm việc này trên máy chủ CentOS CI, và nhận Genymotion để chạy trên CentOS dường như yêu cầu thay đổi xâm nhập.
Bất kỳ ý tưởng nào để khắc phục hoặc giải quyết sự cố? Như một phương sách cuối cùng tôi có thể bắt N232 UsbManager
's, nhưng nó sẽ là khá xấu như tôi cũng sử dụng một thư viện bên thứ ba tương tác với UsbManager
.
này: https://bugs.chromium.org/p/chromium/issues/detail?id=578875 gợi ý rằng - getDevicesList không hoạt động trên các trình giả lập do các trình mô phỏng thiếu hỗ trợ usb. – Tom