2012-08-05 82 views
6

我希望能够在设备锁定密码时启动不属于我的应用程序的活动。如果甚至有可能,我怎么能这样做?在锁定手机时启动外部活动

注:我深知把getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);我的活动onCreate内。但是,这不起作用,因为我没有开始我自己的活动,而是第三方活动,它不在我的应用程序之列。

+0

为什么你需要这样做? – 2012-08-08 01:17:50

+0

是否要解锁手机并显示该活动,或只是在后台启动它,并等待用户解锁手机? – Erol 2012-08-08 03:21:24

+0

手机将保持锁定状态,因为它受密码保护。但是我想在前台展开活动(在锁屏前) – Jakar 2012-08-08 21:10:28

回答

1

,如果你正在尝试启动任何它不会工作第三方应用程序锁定屏幕上。正如你自己所观察到的,你需要设置窗口标志以确保活动在锁定屏幕上启动,但无法确保来自其他第三方应用的活动也设置相同的标志。

如果您正在构建一个功能包,其中每个功能只是一个不同的应用程序,那么您将必须确保这些功能的所有入口点都设置此窗口标志。最好的办法是声明一个BaseActivity,它在创建时设置适当的标志,并让所有功能开发团队使用它作为入口点的基类。

1

覆盖功能

public void onAttachedToWindow() { 

    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

这将解锁后,把你的活动可见。

+0

如果我没有弄错,这会把我的活动带到前台,我已经解决了这个问题。请参阅我的问题中的**注**。我需要在第三方应用上启动活动并将其带到前台(在锁屏前)。 – Jakar 2012-08-10 05:16:59

1

只有当实际的开发人员通过覆盖您尝试从应用程序中打开的活动中的onAttachedToWindow()方法编写代码时,才有可能。

如果没有,那么,抱歉地说,但你没有选择,做你正在尝试做的(至于最近的API去)

+0

downvoting的任何原因? – 2012-08-17 14:15:22