【问题标题】:Start external activity while phone is locked在手机锁定时开始外部活动
【发布时间】:2012-08-05 16:20:37
【问题描述】:

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

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

【问题讨论】:

  • 您是要解锁手机并显示活动,还是只是在后台启动它并等到用户解锁手机?
  • 手机将保持锁定状态,因为它受密码保护。但我想在前台(锁屏前)启动活动
  • @Jakar 您能否从市场上下载“WinAmp”activate the LockScreen player 并确认 是您要存档的内容吗?

标签: android lockscreen android-windowmanager


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    重写函数

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

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

    【讨论】:

    • 如果我没记错的话,这会将我的活动带到前台,我已经解决了这个问题。请参阅我的问题中的 Note。我需要在第三方应用程序上启动Activity 并将其置于前台(在锁定屏幕前)。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      相关资源
      最近更新 更多