USBManager hasPermission возвращает false, если приложение запускается в фоновом режиме после запуска - PullRequest
0 голосов
/ 10 октября 2018

У меня есть этот код, который запускается при запуске приложения (в onCreate MainActivity) и проверяет, есть ли у меня разрешение для устройства USB:

        UsbManager manager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
        Set<String> keySet = deviceList.keySet();

        for(String key : keySet)
        {
            if(deviceList.get(key).getProductId()==24577 && deviceList.get(key).getVendorId()==1027)
            {
                if( !manager.hasPermission(deviceList.get(key))){

У меня есть это в манифесте:

<uses-feature android:name="android.hardware.usb.host"/>

Если я запускаю приложение в обычном режиме, hasPermission возвращает true и все работает нормально.

Проблема в том, что другое приложение запускает мое, а после этого запускает другое приложение, поэтому мое приложение находится на переднем плане простонесколько миллисекунд.В этом случае hasPermission возвращает false.

Почему?и как я могу избежать этого поведения

1 Ответ

0 голосов
/ 11 октября 2018

Проблема заключалась в том, что приложению не хватало времени на переднем плане.Иногда onCreate mainActivity даже не вызывалось.

Я заканчивал вывод своего приложения на передний план, завершал действие onCreate и отправлял его обратно в фон

...