使用 ACTION_MANAGE_OVERLAY_PERMISSION 在后台启动 activity

Start an activity in backround by using ACTION_MANAGE_OVERLAY_PERMISSION

我想通过使用 ACTION_MANAGE_OVERLAY_PERMISSION 在后台启动一个 activity(即使应用程序被终止)。它仅在应用程序位于前台时有效。我的代码在下面;

1.Manifest 文件

 <uses-permission android:name="android.permission.WAKE_LOCK" />

 <receiver
        android:name=".digitalclock.DigitalClockReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.SCREEN_ON" />
            <action android:name="android.intent.action.SCREEN_OFF" />
        </intent-filter>
    </receiver>

2-BroadcastReceiver

 override fun onReceive(context: Context?, intent: Intent?) {

    if (intent?.action.equals(Intent.ACTION_SCREEN_OFF)) {

     
        if (Build.VERSION.SDK_INT >= 29) {
            val intent2 = Intent(context, DigitalClockActivity::class.java)
            intent2.putExtra("unlock_screen", true)
            intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            context?.startActivity(intent2)
        } 

        }
    }

我还在 Broadcast 中启动了一个服务,它总是接收到 intent-filter,即使应用程序被杀死。服务 class 也启动但 activity 没有。

尝试替换

val intent2 = Intent(context, DigitalClockActivity::class.java)

带有硬编码包和 class 名称

val i = Intent();
i.setClassName("com.test", "com.test.DigitalClockActivity")

将包和 activity class 名称更改为您自己的!