6

我希望能够在设备被密码锁定时启动不属于我的应用程序的活动。如果可能的话,我怎么能做到这一点?

注意:我很清楚我的活动getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);范围内onCreate。但是,这不起作用,因为我没有开始我自己的活动,而是我的应用程序之外的第 3 方活动。

4

3 回答 3

1

覆盖函数

public void onAttachedToWindow() {

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

这将使您的活动在解锁后可见。

于 2012-08-08T12:27:34.313 回答
1

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

如果不是,那么,很抱歉,但你没有选择去做你想做的事情(就最近的 API 而言)

于 2012-08-14T09:13:19.133 回答
1

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

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

于 2012-08-14T09:14:28.067 回答