【问题标题】:Can I launch a specific app when android device get physically connected to a specific usb device?当 android 设备物理连接到特定的 USB 设备时,我可以启动特定的应用程序吗?
【发布时间】:2019-07-03 16:09:13
【问题描述】:

我可以“注册”一个(已安装的)特定应用程序以在 android 设备物理连接到特定 USB 设备时启动吗?

例如。
我连接了一个键盘(某个品牌或特殊的 USBid/类),它会自动启动一个文本编辑器应用程序
我连接了一个 USB 声卡,它会启动一个音频应用程序。

“更好”的是,Android 上是否有自动启动功能?我将键盘+存储设备插入我的智能手机,Android 会询问我是否要从存储中安装 apk(或从预定义的 url 下载)
显然,出于安全原因,我理解从存储中安装应用程序需要用户确认。但是,一旦“注册”了应用程序,是否可以在没有确认屏幕的情况下自动启动应用程序?

我知道我可以通过 android.hardware.usb.usbdevice 获取 USB 信息。我的问题更多是关于如何告诉 Android 在连接 USB 设备时启动这个应用程序而不是另一个应用程序。

【问题讨论】:

    标签: android usb launch


    【解决方案1】:

    我认为您可以注册您的应用以接收像 USB_ACCESSORY_ATTACHED 这样的系统广播,并制定在发生这种情况时启动您的应用的逻辑。

    查看https://developer.android.com/guide/components/broadcasts

    https://developer.android.com/reference/android/hardware/usb/UsbManager.html#ACTION_USB_DEVICE_ATTACHED

    【讨论】:

    • 谢谢。我想我明白了:在应用程序清单(在接收器/意图过滤器/操作部分)中,您注册要监视的事件。就我而言,“android.intent.action.ACTION_USB_DEVICE_ATTACHED”。在我的代码中,我需要实现 BroadcastReceiver 的子类和 onReceive(Context, Intent) 方法。这将在应用程序的后台进程中运行,并在事件发生时被操作系统唤醒。然后我必须将我的应用程序的 UI 放到前台。我需要处理它的 BG/UI 方面(以前从未做过 Android 开发),但至少看起来可以做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2012-12-23
    • 2012-11-16
    相关资源
    最近更新 更多