Android 连接到 USB 设备时禁用默认应用程序选择提示

Android disable default app selection prompt when connect to a usb device

我有一个 Android 应用程序需要连接到 USB 设备。我已经使用 intent 过滤器来获得对设备的许可,但是,每次当我将 phone 连接到 USB 设备时,Android 会自动提示选择要使用 USB 设备打开的默认应用程序。我知道设备的所有默认应用程序都由具有 intent 过滤器的活动决定 <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />

所以我的问题是,如何禁用设备提示?无论应用程序是否打开,提示总是在连接设备时出现,这对我来说真的很烦人。感谢您的帮助!

我刚刚发现有一种方法可以 "hack" 提示。

  1. 创建空白activity,添加带有 USB 附加过滤器的 intent-filter <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />

  2. 删除所有其他活动的 USB Attach intent 过滤器,并在这些活动中手动添加 requestPermission。因为空白activity会记住整个应用的USB权限,所以一旦这些活动用户授予了USB权限,那么整个应用就被授予了。因为现在只有空白activity注册了USB attach intent filter,所以这个空白activity会在USB device plugin

  3. 时默认启动
  4. 在空白activityonCreate中调用onBackPressed,这样空白activity一启动就自动返回,并且因为这真的很快,所以用户不应该意识到任何变化。

因此,当应用程序打开时,插入USB设备就像用户没有发生任何事情一样。