1

活动:停止应用程序响应于USB事件正在重新启动时,它的已经在前景

1.USB设备插上

  • 提示出现说:“此USB设备连接时打开appName?”
  • 按取消 - >应用程序保持打开状态|按正常 - >应用程序重新启动
  • 要求的行为:的应用程序或者不显示对话框并自动打开应用程序时,它不是在前台,或者,当应用程序在前台运行,则用户时按下好的应用程序不会重新启动。

    尝试的解决方案:我试着确保每一个活动的启动模式设置为"SingleTask"。这个解决方案工作here,但是当我做同样的事情时,应用程序仍然重新启动。

    问题概括:当用户说当设备连接时打开应用程序时,如何停止我的应用程序重新启动?或者,我该如何完全停止此提示,同时仍启用此USB设备连接时启动我的应用程序?

    我见过它处理停止提示显示,询问应用是否应该被允许访问连接的设备,但是,我的问题是处理不同的提示类似的问题。

    在此先感谢。

    回答

    0

    应用程序使用与AppChooserLauncher对话框https://developer.android.com/guide/components/intents-filters.html

    IntentFilter当你在android.hardware.usb.action.USB_DEVICE_ATTACHED使用IntentFilter这总是会发生的。另一种可能性是,对话是AppChooser发射对话框当有多个应用程序(或相同的/你的应用程序的多个实例)被调用,捕捉的USB连接的事件。这就是为什么当你按Cancel该应用程序保持打开。

    使用一个意图过滤

    要让应用程序发现一个特定的USB设备,可以 指定意图过滤器来过滤的 android.hardware.usb.action.USB_DEVICE_ATTACHED意图。随着 这个意图过滤器,你需要指定,指定USB设备的 属性,如产品和供应商ID的资源文件。 当 用户连接与您的设备过滤器匹配的设备时,系统 会向他们显示一个对话框,询问他们是否想要启动您的 应用程序。如果用户接受,您的应用程序将自动具有 访问设备的权限,直到设备断开连接。

    https://developer.android.com/guide/topics/connectivity/usb/host.html

    这是一个系统对话框在内部链接到android.hardware.usb.action.USB_DEVICE_ATTACHED事件因此禁用这将是困难的。有使用的可能性<activity-alias>https://developer.android.com/guide/topics/manifest/activity-alias-element.html可以路线意图它:

    http://www.stackoverflow.com/questions/40182096/usb-permissions-without-prompt/40182413#40182413

    http://blog.danlew.net/2014/01/16/preserve-your-launchers-use-activity-alias/Is there any way to have one and only one instance of each activity?

    +0

    感谢您的答复。我需要说明如何禁用对话框的哪部分代码?该对话框由Android自动生成。你提供的第二个链接基本上给出了和我说的我在我的问题中尝试的解决方案相同的解决方案(它暗示使用:SingleInstance&我说我使用了SingleTask),我认为这两种模式都不是不要停止应用程序重新启动。 –

    +0

    post'manifest.xml'和任何你用'IntentFilter'来处理'USB_DEVICE_ATTACHED' –