在 Android 中监控 USB 驱动器插入和设置 Wi-Fi 的最佳方式

Best way to monitor USB drive insertion and set up Wi-Fi in Android

我是 运行ning stock Android KitKat 在定制板上。我希望能够检测到何时插入了 USB 驱动器,从驱动器中读取文本文件,然后根据文件的内容更改 Wi-Fi 设置。

理想情况下,我想使用 shell 脚本来完成此操作;因为在我认为那将是最快的方法之前,我从未编写过 Android 应用程序。但是我是 Android 的新手,我不确定是否可以通过 shell 脚本做我想做的事。我已经能够在启动时自动获得一个简单的脚本 运行,但是当我插入 USB 驱动器时 /dev 中没有任何显示。

我不确定这里是否是提出这个问题的最佳场所,但有人可以向我指出正确的方向吗?这可以通过 shell 脚本实现吗,还是我应该硬着头皮下载并学习 Android SDK?

谢谢

马龙

在shell脚本中检测USB设备插拔行为是可以的,但这种方法不可靠且丑陋。同时,在你的 shell 脚本中,如何在连接 USB 设备后设置 Wi-Fi?在应用层做的更好的方法是设置一个 BroadcastReceiver 来检测事件,并根据不同的事件执行不同的操作。在 Android 应用程序中,您可以这样做。

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            if (action.equals(UsbManager.ACTION_USB_ACCESSORY_ATTACHED)) {
                // TODO: handle accessory attache action
            } else if (action.equals(UsbManager.ACTION_USB_ACCESSORY_DETACHED)) {
                // TODO: handle accessory detach action
            } else if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
                // TODO: handle device attache action
            } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
                // TODO: handle device detach action
            }
        }
    };

    IntentFilter intentFilter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
    intentFilter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
    intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
    intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);

    registerReceiver(broadcastReceiver, intentFilter);