如果启动后将应用程序发送到后台,则USBManager hasPermission返回false

时间:2018-10-10 11:04:54

标签: android permissions usb

我有以下代码在应用启动时运行(在MainActivity的onCreate中),并检查我是否具有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 :(得分:0)

问题在于应用程序的前台时间不足。有时甚至没有调用mainActivity的onCreate。

我结束了将应用程序置于前台,完成了onCreate上的活动,并将其发送回后台