mam jakiś kod, który wygląda jakNullPointerException od UsbManager
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
usbManager.getDeviceList();
Kiedy używać Androida 5.0 emulatora, otrzymuję tę katastrofę:
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)
...
Rozumiem, że oficjalny emulator Android ma USB wsparcie, ale spodziewałbym się zobaczyć pustą listę urządzeń USB, a nie awarię.
Szczytowałem trochę w kodzie Androida, a mapa serwisów ServiceManager
nie zawierała pozycji dla "usb"
. Nic w stosie systemu Android 21 nie obsługuje wartości null zwróconej przez ServiceManager
.
Kod działa prawidłowo na emulowanych urządzeniach 4.4, ale ulega awarii na urządzeniach 5.0. Architektura CPU wydaje się nie mieć znaczenia; Próbowałem ARM i x86.
Działa również dobrze na wszystkich urządzeniach Genymotion, które wypróbowałem, ale muszę to zrobić działając na hostach CentOS CI, a generowanie Genymotion na CentOS wydaje się wymagać uciążliwych zmian.
Wszelkie pomysły na naprawę lub obejście problemu? W ostateczności mogłem złapać NPE UsbManager
, ale byłoby to bardzo złe, ponieważ korzystam również z biblioteki stron trzecich, która współdziała z UsbManager
.
to: https://bugs.chromium.org/p/chromium/issues/detail?id=578875 sugeruje, że - getDevicesList nie działa na emulatorach ze względu na brak wsparcia usb przez emulatory. – Tom