更改三星Galaxy相机上默认的BOOT_COMPLETED活动

3
我的问题特别涉及三星Galaxy相机设备。它配备了一款定制的相机应用程序,我猜测这是三星自主开发的。由于此设备可以被视为一台相机,而不是带有相机的电话,因此与其他设备在启动完成后将用户带到主屏幕不同,他们似乎决定在启动时启动其相机应用程序。
现在,在我们的场景中,我们使用我们自己的应用程序来发货,该应用程序具有自己的相机界面。我们可以在展示模式下运行我们的应用程序,但我们也想允许用户使用其他可能对他日常工作有帮助的应用程序。
因此,理想情况下,设备应在启动完成后启动主屏幕。然后用户可以决定启动我们的应用程序或其他应用程序。但如果不可能实现这一点,那么我们的应用程序将在启动时代替主屏幕启动也可以(因为用户可以通过按主页按钮回到主屏幕)。
由于我没有看到强制主屏幕在启动完成后出现的机会,因此我尝试默认启动我们自己的应用程序。为了实现这一点,我创建了一个具有以下筛选器的接收器:
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter> 

当意图被接收时,我会启动我们应用程序的主要活动。
在结果中,在设备启动后,三星默认相机应用程序将首先启动。你会看到他们的主要活动和最让人讨厌的部分:摄像头镜头将完全伸展。在此之后,我们的应用程序自动启动。
我猜测,三星的相机应用程序也会对引导完成事件做出反应。有没有任何机会阻止他们的应用程序被启动?
2个回答

1
我认为,虽然有些繁琐,但可以通过使用DevicePolicyManager而无需root权限来实现。将您的应用程序设置为设备管理员并禁用相机后,内置相机应用程序将不会在开机时启动(也不会在按下相机按钮时启动)。一旦您的应用启动,重新启用相机并开始使用。

我还没有机会创建代码(当我完成时,我将更新此答案),但我已经使用Play商店中的DisableCameraDevice应用进行了测试。使用此应用程序设置后,相机应用程序不会在启动时启动,并且我的应用程序接收BOOT_COMPLETE事件后,在几秒钟的主屏幕时间后启动。

它也不会停止相机按钮事件(但会停止相机应用程序),因此您可以对此执行相同的操作(这似乎也忽略了android:priority值)。

如果您想更进一步,甚至可以使您的相机应用程序响应CommonsWare提到的ACTION_MAIN、CATEGORY_HOME意图,并持久地选择它作为主屏幕应用程序。

与全屏应用程序结合使用,该应用程序不显示主页/返回按钮,您可以很好地锁定一个防护相机,以提供给客户。


我从Google Play安装了DisableCameraDevice并安装了Tasker,它似乎可以正常工作。我创建了任务发送意图到DisableCameraDevice,在设备关闭和显示状态关闭时禁用相机。然后在设备启动和退出显示状态关闭时启用相机。由于Tasker启动较慢,启动时会有一些延迟。如果您执行“关机”,它将绕过Tasker的设备关闭事件。(我注意到这也意味着Tasker会失去信息,因此我怀疑它是否符合Android标准。) - noisygecko

0
相机应用程序使用附加到接收器的BOOT_COMPLETED权限。它是系统应用程序,因此您需要root权限才能在系统级别上进行修改。如果您正在打包自己的固件,这将不成问题。标准启动器没有标准的引导权限,但您的应用程序会有。通过删除权限,可以避免任何不启动的问题。此外,优先级为499更好,以落入500的限制范围内。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接