Android 更改三星Galaxy Camera上的默认启动\u已完成活动

Android 更改三星Galaxy Camera上的默认启动\u已完成活动,android,android-intent,Android,Android Intent,我的问题特别涉及三星Galaxy相机设备。它附带一个定制的摄像头应用程序。我想三星是自己开发的。由于该设备可以被视为摄像头,而不是带有摄像头的手机,因此他们似乎决定在引导时启动摄像头应用程序,而不是在引导完成后将用户带到主屏幕的其他设备 现在,在我们的szenario中,我们提供的设备带有自己的应用程序,该应用程序具有自己的摄像头接口。我们可以在kiosk模式下运行我们的应用程序,但我们希望允许用户使用其他可能对其日常工作有帮助的应用程序 因此,理想情况下,设备应在引导完成后启动主屏幕。然后用户

我的问题特别涉及三星Galaxy相机设备。它附带一个定制的摄像头应用程序。我想三星是自己开发的。由于该设备可以被视为摄像头,而不是带有摄像头的手机,因此他们似乎决定在引导时启动摄像头应用程序,而不是在引导完成后将用户带到主屏幕的其他设备

现在,在我们的szenario中,我们提供的设备带有自己的应用程序,该应用程序具有自己的摄像头接口。我们可以在kiosk模式下运行我们的应用程序,但我们希望允许用户使用其他可能对其日常工作有帮助的应用程序

因此,理想情况下,设备应在引导完成后启动主屏幕。然后用户可以决定启动我们的应用程序或其他应用程序。但是如果这不可能,我们的应用程序也可以在启动时启动,而不是在主屏幕上启动(因为用户可以通过主屏幕按钮到达主屏幕)

因为我看不到在引导完成后强制主屏幕出现的任何机会,所以我尝试在默认情况下启动我们自己的应用程序。为了实现这一点,我使用以下过滤器创建了一个接收器:

<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter> 

收到意图后,我启动应用程序的主要活动

因此,启动设备后,三星默认的摄像头应用程序将首先启动。你会看到他们的主要活动和最烦人的部分:相机镜头将完全展开。在这之后的一瞬间,我们的应用程序会自动启动


我的猜测是,三星相机应用程序也会对启动完成事件做出反应。我们是否有可能阻止他们的应用程序启动

我相信这是可以实现的——尽管是在一个复杂的庄园里——而不需要使用DevicepolicManager生根。通过使您的应用程序成为设备管理员并禁用摄像头,内置摄像头应用程序将不会在通电时启动(也不会按下摄像头按钮)。一旦你的应用程序启动,请重新启用相机并享受乐趣

我还没有机会创建代码(并在创建代码后更新此答案),但我已经使用play store中的DisableCameraDevice应用程序进行了一定程度的测试。使用此应用程序设置,相机应用程序不会在启动时启动,而我的应用程序会在几秒钟的主屏幕时间后启动

它也不会停止摄像头按钮事件(但会停止摄像头应用程序),所以你也可以这样做(这似乎也忽略了android:优先级值)

如果你想更进一步,你甚至可以让你的相机应用程序响应Commonware提到的ACTION_MAIN、CATEGORY_HOME意图,并持续选择它作为主屏幕应用程序


与不显示主页/后退按钮的全屏应用程序相结合,您可以很好地锁定傻瓜摄像头,以便为客户提供服务。

摄像头应用程序使用连接到接收器的引导完成权限。它是一个系统应用程序,因此需要root用户在系统级别对其进行修改。如果您正在打包自己的固件,这将不是问题。标准启动程序没有标准启动权限,但您的应用程序会。这将通过简单地删除权限来避免不引导任何内容的问题。另外,优先级499最好在500以内。

我从Google Play安装了DisableCameraDevice,还安装了Tasker,这似乎有效。我创建了任务来发送禁用CameraDevice的意图,以禁用设备上的摄像头关闭和显示状态关闭。然后,我启用设备上的摄像头启动并退出显示状态关闭。启动时会有一点延迟,因为Tasker启动速度不是很快。如果您执行“关机”操作,它将绕过Tasker设备关机事件。(我注意到这意味着Tasker也会丢失信息,所以我怀疑它是否符合Android。)