用工人的意图开始活动,在某些设备上不起作用
我正在尝试使用Worker
使用Workmanager
API在应用程序在后台时仅在特定时间/日期打开一次活动,它在我的模拟器中确实可以工作在Android 12上,但是当我在Redmi Note 8手机上运行它时,它并没有打开活动,尽管工人正常在同一手机上工作
openActivityWorker.kt
class OpenActivityWorker(val context: Context, private val workerParameters: WorkerParameters) : Worker(context, workerParameters) {
@OptIn(DelicateCoroutinesApi::class)
override fun doWork(): Result {
Handler(Looper.getMainLooper()).post(Runnable {
val intent = Intent(context, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val res = context.startActivity(intent)
Log.d("OpenActivityWorker", "doWork: $res")
})
return Result.success()
}
}
,我注册了以下内容:
val oneTimeWorkRequestActivity = OneTimeWorkRequest.Builder(OpenActivityWorker::class.java)
.setInitialDelay(SOME_MILLIS,
TimeUnit.MILLISECONDS
)
.setInputData(
Data.Builder()
.putLong("startAt", SOME_MILLIS)
.putLong("id", SOME_ID)
.build()
)
.build()
WorkManager.getInstance(requireContext()).enqueueUniqueWork(
"$SOME_ID",
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequestActivity
)
如何解决此问题,并且是否需要某种许可,我需要要求能够从workmanager ?
I am trying to implement a Worker
using WorkManager
API to open an activity only once on a specific time/date when the app is in background, It does work in my emulator even on Android 12 but when I run it on my Redmi note 8 phone it does not open the activity although the workers are working normally on the same phone
OpenActivityWorker.kt
class OpenActivityWorker(val context: Context, private val workerParameters: WorkerParameters) : Worker(context, workerParameters) {
@OptIn(DelicateCoroutinesApi::class)
override fun doWork(): Result {
Handler(Looper.getMainLooper()).post(Runnable {
val intent = Intent(context, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val res = context.startActivity(intent)
Log.d("OpenActivityWorker", "doWork: $res")
})
return Result.success()
}
}
And I register the worker as follows:
val oneTimeWorkRequestActivity = OneTimeWorkRequest.Builder(OpenActivityWorker::class.java)
.setInitialDelay(SOME_MILLIS,
TimeUnit.MILLISECONDS
)
.setInputData(
Data.Builder()
.putLong("startAt", SOME_MILLIS)
.putLong("id", SOME_ID)
.build()
)
.build()
WorkManager.getInstance(requireContext()).enqueueUniqueWork(
"$SOME_ID",
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequestActivity
)
How to solve this, and is there some kind of permission I need to ask for to be able to start the activities from WorkManager
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在您的第一个代码块中,您什么时候打电话给此行?
将表达式称为以外的变量;
:)
In your first code block, when do you call this line?
Call the expression outside a variable like;
:)