用户解锁屏幕后会显示Android Activity

时间:2010-03-31 14:27:49

标签: android user-interface background android-activity lockscreen

我想知道是否有人了解如何在解锁屏幕时显示您的应用程序。我有一个应用程序,用户打开蓝牙设备,它连接到手机,用户应该看到一个用户界面。让他们寻找应用程序或使用通知菜单不是一个可行的选择(太多的工作,而不是明显的行为)。

问题在于: 屏幕解锁时:   - 当蓝牙连接到设备时,您可以从后台服务弹出活动   - 用户很高兴,因为用户界面就在那里

屏幕锁定时:   - 应用程序启动但被销毁   - 用户解锁手机,但主屏幕上没有任何内容

一个解决方法是在应用程序被唤醒时禁用键盘锁,但核选项是一个非常糟糕的选择。

PS: 我知道标准的Android假设是你不应该这样做。在正常情况下,这种行为很好,但在这种情况下,我明确地做了一些我希望手机响应而不为用户添加更多工作的事情。根据Google的指导原则,如果您不喜欢此行为,可以选择关闭此功能,或者您无法使用该应用程序。


还有一些细节,所以在看了这个之后,问题不一定是你在屏幕被锁定时无法运行活动,解锁并期望它等待。如果您执行以下操作,这确实有效:

  • 锁定您的设备
  • 在手机锁定/关闭时通过Eclipse运行应用程序
  • 解锁,它会等你

但是在活动已经运行的情况下,我正在建立一个新的窗口(恰好是一个透明的窗口,说你已经连接并询问他们想做什么)。问题是它被杀了

E/BackgroundPOPUP( 2436): POPUP created via onCreate!
I/UsageStats(   78): Unexpected resume of com.test.POPUP while already resumed in com.android.launcher2
E/BackgroundPOPUP( 2436): POPUP onPause
E/MyBacgrkoundService( 2436): POPUP active!
I/ActivityManager(   78): Displayed activity com.test.POPUP/.PopupTest: 175 ms (total 175 ms)
I/UsageStats(   78): Something wrong here, didn't expect com.android.launcher2 to be paused
E/BackgroundPOPUP( 2436): POPUP has ended through a call to onStop
E/BackgroundPOPUP( 2436): POPUP has ended through a call to onDestroy

此处的设置如下:

  • MyBackgroundService是一个处理蓝牙状态的服务(等待连接,如果用户启动应用程序则打开蓝牙等)。它会触发一个运行ViewFlipper的弹出BackgroundPOPUP活动。 MyBackgroundService通过意图启动BackgroundPOPUP
  • BackgroundPOPUP是一个半透明主题的活动(准确地说是Theme.Translucent),它显示了一个带有一些说明的ViewFlipper并提供了一些选项

1 个答案:

答案 0 :(得分:0)

您可以使用KeyGuardManager方法 public void exitKeyguardSecurely(KeyguardManager.OnKeyguardExitResult回调)

  

安全地退出键盘锁。使用   这个api的情况是,之后   禁用键盘,你的应用程序,   被授予的权限   禁用键盘并显示一个   被视为有限的信息量   没有用户过去的安全   键盘,需要导航到   一些不安全的东西   没有越过钥匙守卫。   如果键盘安全,这将是   调出解锁屏幕   键盘锁。参数回调让我们   你知道这次行动是否合适   成功,发射是安全的   通常会发生的任何事情   用户具有安全性   越过了钥匙卫士。

我并非100%确定这符合您的要求。

另一种选择是使用公共布尔值inKeyguardRestrictedInputMode()检查应用程序唤醒时是否启用了键盘锁,以及是否阻止应用程序唤醒,直到键盘锁解锁为止