首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序在每次重新启动手机时都请求USB许可。

应用程序在每次重新启动手机时都请求USB许可。
EN

Stack Overflow用户
提问于 2016-08-24 13:45:48
回答 1查看 1.5K关注 0票数 0

我使用USB接收器来处理通过USB连接到电话上的温度传感器的通信。

到目前为止,一切都很好,但是如果我重新启动手机,应用程序会在重启后直接弹出一个USB权限弹出,即使当时手机上没有任何USB设备。

有人知道是什么导致了这个奇怪的问题吗?

[编辑:对不起,应用程序没有要求USB许可,弹出窗口询问我是否想打开这个应用程序,如果“这个设备连接了”,但是显然没有附加设备。]

这是USB接收器的代码:

代码语言:javascript
复制
//Initial USB Settings Receiver
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(final Context context, final Intent intent) {
        final String action = intent.getAction();

        if (ACTION_USB_PERMISSION.equals(action)) {
            synchronized (this) {
                final UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

                // is usb permission has been granted, try to open a connection
                if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                    if (device != null) {
                        // call method to set up device communication
                        Constants result = mcp2221.open();

                        if (result != Constants.SUCCESS) {
                            //nothing by now
                        } else {
                            openConnectionToMCP2221();
                        }
                    }
                }
            }
        }

        if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
            // close the connection and release all resources
            closeAllResources();
            // leave a bit of time for the COM thread to close
            try {
                Thread.sleep(20);
            }catch(InterruptedException e){e.printStackTrace();}
            mcp2221Comm = null;
            Toast.makeText(getApplicationContext(), "Device detached",
                    Toast.LENGTH_SHORT).show();
        }

        if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
            final UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
            if (device != null) {
                Toast.makeText(getApplicationContext(), "Device attached",
                        Toast.LENGTH_SHORT).show();
                mStopUSBThread=false;

                // only try to connect if an MCP2221 is attached
                if (device.getVendorId() == MCP2221_VID && device.getProductId() == MCP2221_PID) {
                    Constants result = mcp2221.open();

                    switch (result) {
                        case SUCCESS:
                            openConnectionToMCP2221();
                            break;
                        case CONNECTION_FAILED:
                            Toast.makeText(getApplicationContext(), "ERROR: connection failed", Toast.LENGTH_SHORT).show();
                            break;
                        case NO_USB_PERMISSION:
                            Toast.makeText(getApplicationContext(), "ERROR: no USB permission", Toast.LENGTH_SHORT).show();
                            mcp2221.requestUsbPermission(mPermissionIntent);
                            break;
                        default:
                            break;
                    }
                }
            }
        }

    }
};

下面是onCreate()部分:

代码语言:javascript
复制
//USB Connection
    mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
    final IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);

    filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
    filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
    registerReceiver(mUsbReceiver, filter);
    //Checking if theres a Device already connected
    .......
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 13:25:41

明白了!那是一个

代码语言:javascript
复制
<intent-filter>
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
</intent-filter>

这是在AndroidManifest.xml中<activity>下声明的。

我不完全理解,为什么它会导致这个问题,但删除它保留了我的应用程序的功能,同时摆脱了这个问题。

只有‘消极’方面可能是,现在应用程序不要求打开,如果传感器是连接到手机。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39125084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档