如何检查由单独 Android 应用程序中的服务启动的 Android 应用程序是不是已完成加载?

Posted

技术标签:

【中文标题】如何检查由单独 Android 应用程序中的服务启动的 Android 应用程序是不是已完成加载?【英文标题】:How to check if an Android app started by a service in a separate Android app has finished loading?如何检查由单独 Android 应用程序中的服务启动的 Android 应用程序是否已完成加载? 【发布时间】:2021-11-25 07:00:11 【问题描述】:

我正在使用下面的代码从我正在开发的应用中的后台服务启动已安装的相机应用(不是我开发的)。

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.sec.android.app.camera");
startActivity( launchIntent );

我需要确定相机应用程序是否已完成加载并可以使用,以便我可以提示相机拍照。拍完照片后,我的应用会回到前台并显示屏幕保护程序,直到再次启动相机或回到前台拍摄另一张照片。有没有办法在每次尝试发送命令之前验证相机应用程序是否已加载并准备就绪?

为了清楚起见,我不是在询问如何专门在相机应用上检查这一点。我正在尝试学习如何启动几乎任何应用程序(不是由我开发的)并聆听它完全加载并准备好。

【问题讨论】:

【参考方案1】:

我正在使用下面的代码从后台服务启动已安装的相机应用程序(不是我开发的)

现代版本的 Android 不支持从后台启动活动。

另请注意,许多设备没有该特定软件包。

我需要确定相机应用是否已完成加载并准备好使用,以便提示相机拍照

“完成加载并准备使用”没有规范的定义。而且,一般来说,出于隐私和安全原因,您无法监控其他应用的操作。

此外,在无障碍服务之外,一般来说,您无法告诉正在运行的应用执行任何操作,除非它具有用于该目的的特定 API。即使有无障碍服务,我怀疑无论相机应用是什么,都很难找到一种有效的方法。

如果您希望在前台使用相机应用拍照,请使用ACTION_IMAGE_CAPTURE。或者,将相机功能直接集成到您自己的应用中,例如通过 CameraX 或其他库。

【讨论】:

感谢您的意见。在考虑了替代方案后,我认为尝试集成相机功能将是这种情况下的最佳解决方案。

以上是关于如何检查由单独 Android 应用程序中的服务启动的 Android 应用程序是不是已完成加载?的主要内容,如果未能解决你的问题,请参考以下文章

在 android 服务的单独线程中运行位置更新

Android 开机自启服务

如何创建转轮控件?

单独线程中的 XMPP 连接 - 仍然被 Android 操作系统关闭?

对于使用“DataGridView”的 Windows 窗体应用程序,如何检查数据源中的值并更改单独单元格的颜色?

如何将 xmpp 侦听器添加到 android 中的服务?