Android usb权限。如何处理连接、分离和已插入

Android usb权限。如何处理连接、分离和已插入,android,qt,permissions,usb,Android,Qt,Permissions,Usb,我正在开发一个android应用程序,它必须与usb设备通信。我在上阅读了文档,并添加了一个意图过滤器和一个设备列表。之后,我的应用程序在我插入设备时检测到设备,并提供自动启动应用程序。如果在设备插入时应用程序已在运行,或者在我启动应用程序时设备已插入,则存在问题 如果应用程序已经在运行,我会得到一个新的空白窗口。我怀疑它启动了另一个实例,并将android:launchMode=“singleTask”添加到我的清单中,但行为没有改变。我想我收到了一条错误消息:E/QtJava(6433):未

我正在开发一个android应用程序,它必须与usb设备通信。我在上阅读了文档,并添加了一个意图过滤器和一个设备列表。之后,我的应用程序在我插入设备时检测到设备,并提供自动启动应用程序。如果在设备插入时应用程序已在运行,或者在我启动应用程序时设备已插入,则存在问题

如果应用程序已经在运行,我会得到一个新的空白窗口。我怀疑它启动了另一个实例,并将android:launchMode=“singleTask”添加到我的清单中,但行为没有改变。我想我收到了一条错误消息:E/QtJava(6433):未找到曲面1

如果在启动应用程序时设备已插入,则在尝试打开设备时会出现权限错误

我想要的行为是: -如果应用程序未运行时连接了开发人员,请启动应用程序 -如果应用程序运行时连接了dev,请检测它并枚举设备 -如果应用程序运行时dev分离,请在我的代码中检测并处理它

如果我做得正确的话,所有这一切是否都可以通过意图过滤器实现


我正在用Qt开发应用程序,并使用JNI接口java代码处理usb内容,如果这是相关信息。

您需要将android:launchMode设置为
singleInstance
,而不是
singleTask

发件人:

singleTask

系统在新任务的根目录下创建活动,并将意图路由到该任务。但是,如果活动的实例已经存在,系统将通过调用其onNewIntent()方法将意图路由到现有实例,而不是创建新实例

singleInstance

与“singleTask”相同,只是系统不会向包含实例的任务中启动任何其他活动。活动始终是其任务的唯一成员


我将android:launchMode=“singleTask”更改为android:launchMode=“singleInstance”,并将其放在清单中的正确位置。这就解决了问题。但是,所有问题都还没有解决。如果设备已插入,则不会发生任何情况。