我正在使用 kotlin 开发一些可以相互通信的应用程序。此案例影响其中 2 个应用程序:一个服务和一个播放视频的应用程序。该开发针对具有 Android TV (Android 11) 的特定设备。
该服务有一个正在侦听命令的 Web 套接字。这些命令之一是“播放”。使用此命令,服务必须运行应用程序才能播放视频。
我以前一直使用过这个代码:
val intent = Intent()
intent.setClassName("my.videoapp", "my.videoapp.MainActivity")
intent.putExtra("command", "play")
intent.putExtra("url", "https://www.example.com/samplevideo.mp4")
intent.addFlags(FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
它适用于以下情况
命令来自socket时不起作用。我想这可能与它在另一个线程中运行有关。你知道我怎样才能让它发挥作用吗?
我尝试运行代码
Handler(Looper.getMainLooper()).post {
val intent = Intent()
...
context.startActivity(intent)
}
但是不起作用。
不再允许从后台或前台服务启动活动。从Android 10开始就是这样。
https://developer.android.com/guide/components/activities/background-starts