即使应用程序没有运行,Android也会在解锁屏幕后自动运行应用程序

Posted

技术标签:

【中文标题】即使应用程序没有运行,Android也会在解锁屏幕后自动运行应用程序【英文标题】:Android make the application autorun after unlocking the screen even if the application is not running 【发布时间】:2019-11-14 08:12:42 【问题描述】:

我正在尝试创建一个自动运行服务:以便应用程序在每次解锁屏幕后、输入图形密钥或密码(如果存在)后启动(在 android 7、8、9、10 上)。我通过 borocast 接收器 (ACTION_SCREEN_OFF) 动态编写了代码,但它在应用程序在堆栈上(运行)时工作,我希望它始终启动。通过在 android 9 的清单中注册的方法已经不适用于侦听器。如何实现?

public class WordsBase extends AppCompatActivity 
    ScreenReceiver resiverStart;

 @Override
 protected void onPause() 
        super.onPause();

        resiverStart= new ScreenReceiver();
        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
        registerReceiver(resiverStart,filter);
    

public class ScreenReceiver extends BroadcastReceiver 

    @Override
    public void onReceive(Context context, Intent intent) 
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) 
            Intent intent1 = new Intent(context, WordsBase.class);
            intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent1);
        
        throw new UnsupportedOperationException("Not yet implemented");
    

【问题讨论】:

【参考方案1】:

我了解您希望执行以下操作: 如果用户解锁了设备,你想启动你的应用程序。

你为什么不做以下事情:

    使用USER_PRESENT 接收器(android.intent.action.USER_PRESENT)。请注意,您必须明确注册到此接收器,仅在清单中注册它是不够的 如果触发了相应的广播,请启动您的应用并确保您仍注册到广播(以便在用户下次解锁设备时再次启动您的应用)。

【讨论】:

ACTION_SCREEN_OFF 和 USER_PRESENT 但它在应用程序在堆栈上(运行)时工作,我希望它始终启动。永远开始! - 对我来说是个大问题。 您是否尝试按照我上面的建议来实现它?如果这不起作用,请检查广播接收器是否每次都正确注册。

以上是关于即使应用程序没有运行,Android也会在解锁屏幕后自动运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章

一种在android中获取解锁事件的方法?

即使类别是 AVAudioSessionCategoryPlayback,AVAudioPlayer 也会在屏幕锁定时停止播放

即使我的应用程序关闭,也会在后台运行 dart 代码

Android运行时权限即使没有权限也会通过

即使没有 DOM 断点,Chrome 调试器也会在某个函数处停止

即使在调试之后,Kivymd 应用程序也会在启动时崩溃