将密码屏幕添加到可在设备进入睡眠状态时重新锁定的应用程序吗?

彼德

我有一个可以自动锁定的应用程序(需要输入密码)...

a) when the app starts for the first time
b) when another app is started and takes over the device
c) when the device "sleeps" automatically
d) when the user "sleeps" the device manually
(note: with c & d, if the user "awakens" the app within 5 seconds, it does NOT ask for the password)

我也想为正在编写的应用程序执行此操作,因此我创建了PasswordActivity带有必要的验证步骤的活动(),并使其正常运行。

我最初把它放在了ONCREATEMainActivity(那是在AndroidManifest推出)。这似乎很好。但是随后就开始了重新锁定功能。因此,尝试将其移至ONSTARTONRESUME但是当我的APP中的另一个ACTIVITY聚焦或屏幕旋转时,PasswordActivity再次触发。那行不通。

在这里,我发现了一个线程,建议在清单中将其设置为LAUNCHER应用程序,然后在密码确定时调用MainActivity。这似乎工作得更好...但是随后遇到一个问题,即只有当用户按下主屏幕上的“后退”按钮(我假设正在停止我的应用程序)并再次启动该应用程序时,它才会“重新锁定”。虽然不会捕获其他APP接管该设备。

因此,基于此,在查看了所有文档之后,我可以找到生命周期(尽管大多数生命周期是基于活动的,而不是基于应用程序的),因此不确定当APP本身失去焦点(另一个应用程序接管)时如何捕捉自动或手动睡眠(上面的C&D)以及延时检查。我假设它将是多个调用或步骤的组合,但是目前还不确定到底是哪个。

有什么建议吗?

彼德

我想我是通过一些建议以及一些研究得出的。我在这里发布我的解决方案,以防它可以帮助其他人,有人看到我还没有看到或遇到的明显缺陷,或者有人提供了其他可以改善它的输入。

如前所述,我可以说的最大问题是,没有任何内置函数调用可以确定“您的应用”何时不在前台。onPauseonResume基于活动,而不是基于App ......从这样的活动,以改变在您的应用程序的活动,甚至屏幕旋转,火灾它们。

为了解决这个问题,我创建了一个名为的全局变量gv.appPauseTime我创建了两个单独的通用实用程序函数,可以从应用程序中的任何位置调用该函数。

public static void lockAppStoreTime() {
    gv.appPauseTime=new Date();
}

public static void lockAppCheck(Activity act) {
    boolean bLock=false;

    // Check to see if this is the first time through app       
    if (gv.appPauseTime==null) {
       bLock = true;
    } else {
       Date currTime = new Date();
       long diffMillis = currTime.getTime() - gv.appPauseTime.getTime();
       long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffMillis);

       // Lock app if 120 seconds (2 minutes) has lapsed
       if (diffInSec > 120) {
           bLock=true;
       }
    }

    gv.appLastPause = new Date();
    if (bLock) {
       Intent j = new Intent(act, PasswordActivity.class);
       act.startActivity(j);
    }
}

在每一次活动,我创建(或修改)的onPauseonResume是这样的...

@Override
public void onPause(){
    super.onPause();
    Util.lockAppStoreTime();
}

@Override
public void onResume(){
    super.onResume();
    Util.lockAppCheck(this);
}

onPause火灾,它存储了当前日期(时间)。onResume任何功能触发时,它会将当前日期(时间)与存储的日期(时间)进行比较。如果经过了120秒(2分钟),它将显示PasswordActivity以验证密码。它会在调用PasswordActivity之前“存储”当前日期(时间),以便它不会一直重复。

基本上,如果活动暂停与任何活动之间有2分钟的间隔(在“我的应用”中,恢复(或开始)),则会提示您输入密码。如果用户打开另一个APP,然后再次返回到我的APP ...,如果至少2分钟,则要求输入密码。如果用户关闭电源或关闭应用程序,则重新启动也会触发密码。

我选择了2分钟,因为在我们的应用程序中,这似乎是一个不错的“时间流逝”。当然,这也可以更改。

到现在为止还挺好。希望这对其他人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将密码屏幕添加到可在设备进入睡眠状态时重新锁定的应用程序吗?

来自分类Dev

当Android即将锁定屏幕/进入睡眠状态时执行应用程序

来自分类Dev

通话时设备会进入睡眠状态吗?

来自分类Dev

如何防止Android设备从Qt应用程序进入睡眠状态

来自分类Dev

Android上的Cordova应用程序-屏幕可能无法进入睡眠状态

来自分类Dev

如何强制我的应用程序进入睡眠状态?

来自分类Dev

Xamarin Native Android 应用程序进入睡眠状态或终止时如何获得通知?

来自分类Dev

屏幕打开时,Wi-Fi或CPU可以进入睡眠状态吗?

来自分类Dev

Ubuntu 20.04进入睡眠状态时不询问密码

来自分类Dev

当我的C ++应用程序运行时,如何防止Windows进入睡眠状态?

来自分类Dev

可以将首选项屏幕添加到“设置”应用程序吗?

来自分类Dev

.NET Core Blazor Web应用程序会像ASP.NET WebForms一样进入睡眠状态吗?

来自分类Dev

Node.js / OS X:当计算机进入睡眠状态时如何通知node.js应用程序

来自分类Dev

Node.js / OS X:当计算机进入睡眠状态时如何通知node.js应用程序

来自分类Dev

Windows 10锁定屏幕始终使显示器在60秒后进入睡眠状态

来自分类Dev

将应用程序洞察添加到无状态服务结构应用程序

来自分类Dev

将Docker容器应用托管在Azure Web App免费套餐上时是否会进入睡眠状态?

来自分类Dev

如果设备进入睡眠状态,服务中的android gps位置将关闭

来自分类Dev

如果设备进入睡眠状态,服务中的android gps位置将关闭

来自分类Dev

将Firebase添加到应用程序依赖项列表时,应用程序中断

来自分类Dev

将Firebase添加到应用程序依赖项列表时,应用程序中断

来自分类Dev

进入睡眠状态时,笔记本电脑强制关闭然后重新启动

来自分类Dev

如何设置锁定屏幕(带有图钉提示),但在闲置x分钟后无法进入睡眠状态?

来自分类Dev

是否有一种快捷方式可以让 gnome 进入睡眠状态而不锁定屏幕?

来自分类Dev

确保我的桌面在进入睡眠模式时被锁定

来自分类Dev

安装应用程序后如何将应用程序的快捷方式添加到主屏幕?

来自分类Dev

如何防止应用程序在Delphi XE8中进入睡眠模式

来自分类Dev

如何创建可在屏幕锁定时在震动事件时激活的Android应用程序?

来自分类Dev

VLC是否保持计算机处于活动状态,并防止其进入睡眠状态或显示屏幕保护程序?

Related 相关文章

  1. 1

    将密码屏幕添加到可在设备进入睡眠状态时重新锁定的应用程序吗?

  2. 2

    当Android即将锁定屏幕/进入睡眠状态时执行应用程序

  3. 3

    通话时设备会进入睡眠状态吗?

  4. 4

    如何防止Android设备从Qt应用程序进入睡眠状态

  5. 5

    Android上的Cordova应用程序-屏幕可能无法进入睡眠状态

  6. 6

    如何强制我的应用程序进入睡眠状态?

  7. 7

    Xamarin Native Android 应用程序进入睡眠状态或终止时如何获得通知?

  8. 8

    屏幕打开时,Wi-Fi或CPU可以进入睡眠状态吗?

  9. 9

    Ubuntu 20.04进入睡眠状态时不询问密码

  10. 10

    当我的C ++应用程序运行时,如何防止Windows进入睡眠状态?

  11. 11

    可以将首选项屏幕添加到“设置”应用程序吗?

  12. 12

    .NET Core Blazor Web应用程序会像ASP.NET WebForms一样进入睡眠状态吗?

  13. 13

    Node.js / OS X:当计算机进入睡眠状态时如何通知node.js应用程序

  14. 14

    Node.js / OS X:当计算机进入睡眠状态时如何通知node.js应用程序

  15. 15

    Windows 10锁定屏幕始终使显示器在60秒后进入睡眠状态

  16. 16

    将应用程序洞察添加到无状态服务结构应用程序

  17. 17

    将Docker容器应用托管在Azure Web App免费套餐上时是否会进入睡眠状态?

  18. 18

    如果设备进入睡眠状态,服务中的android gps位置将关闭

  19. 19

    如果设备进入睡眠状态,服务中的android gps位置将关闭

  20. 20

    将Firebase添加到应用程序依赖项列表时,应用程序中断

  21. 21

    将Firebase添加到应用程序依赖项列表时,应用程序中断

  22. 22

    进入睡眠状态时,笔记本电脑强制关闭然后重新启动

  23. 23

    如何设置锁定屏幕(带有图钉提示),但在闲置x分钟后无法进入睡眠状态?

  24. 24

    是否有一种快捷方式可以让 gnome 进入睡眠状态而不锁定屏幕?

  25. 25

    确保我的桌面在进入睡眠模式时被锁定

  26. 26

    安装应用程序后如何将应用程序的快捷方式添加到主屏幕?

  27. 27

    如何防止应用程序在Delphi XE8中进入睡眠模式

  28. 28

    如何创建可在屏幕锁定时在震动事件时激活的Android应用程序?

  29. 29

    VLC是否保持计算机处于活动状态,并防止其进入睡眠状态或显示屏幕保护程序?

热门标签

归档