如何防止 Android 在连接 USB 设备时创建新的 activity?
How to prevent Android from creating a new activity when USB device is connected?
我希望我的 Android 应用程序像这样工作:
当连接新的 USB 设备时,我的应用程序已经处于活动状态,我的应用程序会请求使用 USB 设备的权限。
当再次连接相同(类型)的 USB 设备并且我的应用程序处于活动状态时,我的应用程序可以使用它而无需再次请求许可。
如果我的应用处于活动状态,则当前 activity 会继续 运行(而不是
一个新的 Activity 正在启动)当一个已知的 USB 设备连接时。
我无法让#3 工作:Android9 坚持启动一个新的 Activity,因为我的应用程序已注册为此 USB 设备的默认处理程序。我不关心默认处理程序:我不需要在连接设备时启动应用程序。 (不过,我确实需要#2。)
我试过这个:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP) != 0) {
finish();
return;
}
...
}
不幸的是,这没有用:它从堆栈中删除了我的 activity 的两个副本,导航回 Android 主屏幕。我只想删除或阻止连接已知 USB 设备时由 Android 自动创建的 Activity。
我想要的是可能的,应用程序串行 USB 终端似乎是这样工作的。
我该如何完成?
这个(singleTop
)似乎已经在清单中修复了它:
<activity android:name=".MainActivity" android:launchMode="singleTop">
虽然我不确定这是否是解决问题的正确方法。
'Serial USB Terminal' 应用使用
android:launchMode="singleTask"`
正如您在 https://github.com/kai-morich/SimpleUsbTerminal 中看到的,launchMode=singleTask
和 singleTop
对大多数应用程序具有相同的效果。仅当您要在应用程序中启动另一个 activity 时,例如Android 设置那么你应该使用 singleTask,否则当当前显示设置 activity 时将启动一个新的 MainActivity。
我希望我的 Android 应用程序像这样工作:
当连接新的 USB 设备时,我的应用程序已经处于活动状态,我的应用程序会请求使用 USB 设备的权限。
当再次连接相同(类型)的 USB 设备并且我的应用程序处于活动状态时,我的应用程序可以使用它而无需再次请求许可。
如果我的应用处于活动状态,则当前 activity 会继续 运行(而不是 一个新的 Activity 正在启动)当一个已知的 USB 设备连接时。
我无法让#3 工作:Android9 坚持启动一个新的 Activity,因为我的应用程序已注册为此 USB 设备的默认处理程序。我不关心默认处理程序:我不需要在连接设备时启动应用程序。 (不过,我确实需要#2。)
我试过这个:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP) != 0) {
finish();
return;
}
...
}
不幸的是,这没有用:它从堆栈中删除了我的 activity 的两个副本,导航回 Android 主屏幕。我只想删除或阻止连接已知 USB 设备时由 Android 自动创建的 Activity。
我想要的是可能的,应用程序串行 USB 终端似乎是这样工作的。
我该如何完成?
这个(singleTop
)似乎已经在清单中修复了它:
<activity android:name=".MainActivity" android:launchMode="singleTop">
虽然我不确定这是否是解决问题的正确方法。
'Serial USB Terminal' 应用使用
android:launchMode="singleTask"`
正如您在 https://github.com/kai-morich/SimpleUsbTerminal 中看到的,launchMode=singleTask
和 singleTop
对大多数应用程序具有相同的效果。仅当您要在应用程序中启动另一个 activity 时,例如Android 设置那么你应该使用 singleTask,否则当当前显示设置 activity 时将启动一个新的 MainActivity。