当我打电话给某人或打电话给我并重新启动WorkManager(如果已完成)时,我想停止我的WorkManager。也许我可以添加约束,但是我不知道要添加哪些约束。我该怎么办?
答案 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_OFFHOOK
,CALL_STATE_IDLE
或CALL_STATE_RINGING
时的处理方式。
然后,如果需要停止可能启动的任何工作,可以使用:
WorkManager.getInstance().cancelAllWorkByTag(*work_tag*);