停止并重新启动Workmanager

时间:2019-08-15 12:38:13

标签: android android-workmanager

当我打电话给某人或打电话给我并重新启动WorkManager(如果已完成)时,我想停止我的WorkManager。也许我可以添加约束,但是我不知道要添加哪些约束。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我强烈建议您阅读官方文档:link

您可能正在寻找类似this的东西。

如果您需要在用户开始或结束通话时处理广播,则可能需要查找TelephonyManager

因此,您可以在不同的通话阶段执行不同的工作,因此可以更仔细地了解Device call state

因此,要想在接到电话后能够执行某些操作,您需要注册一个处理操作的广播接收器,因此在AndroidManifest文件中您需要添加权限:

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

然后在清单文件中注册您的接收者:

<receiver android:name=".PhoneCallReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>

此后,您可以覆盖onReceive方法,使用intent.getAction()进行操作,然后在需要时停止或重新启动工作管理器。

然后您可以获取状态:

intent.getExtras().getString(TelephonyManager.EXTRA_STATE);

然后,您可以指定状态为CALL_STATE_OFFHOOKCALL_STATE_IDLECALL_STATE_RINGING时的处理方式。

然后,如果需要停止可能启动的任何工作,可以使用:

WorkManager.getInstance().cancelAllWorkByTag(*work_tag*);