diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 50dc26d7..d6dab3bc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -156,6 +156,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/kotlin/com/tutpro/baresip/TaskReceiver.kt b/app/src/main/kotlin/com/tutpro/baresip/TaskReceiver.kt
new file mode 100644
index 00000000..2fecb262
--- /dev/null
+++ b/app/src/main/kotlin/com/tutpro/baresip/TaskReceiver.kt
@@ -0,0 +1,41 @@
+package com.tutpro.baresip
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+
+class TaskReceiver : BroadcastReceiver() {
+
+ override fun onReceive(context: Context, intent: Intent) {
+ Log.d(TAG, "TaskReceiver: received intent ${intent.action}")
+ var aor = intent.getStringExtra("aor")
+ if (aor == null) {
+ Log.i(TAG,"TaskReceiver: 'aor' extra is missing")
+ return
+ }
+ if (!aor.startsWith("sip:"))
+ aor = "sip:$aor"
+ val ua = UserAgent.ofAor(aor)
+ if (ua == null) {
+ Log.i(TAG, "TaskReceiver: user agent of AoR $aor is not found")
+ return
+ }
+ val acc = ua.account
+ when (intent.action) {
+ "com.tutpro.baresip.REGISTER" -> {
+ Log.d(TAG, "TaskReceiver: registering $aor")
+ Api.ua_register(ua.uap)
+ acc.regint = 3600
+ }
+ "com.tutpro.baresip.UNREGISTER" -> {
+ Log.d(TAG, "TaskReceiver: un-registering $aor")
+ Api.ua_unregister(ua.uap)
+ acc.regint = 0
+ }
+ else -> return
+ }
+ AccountsActivity.saveAccounts()
+ Api.ua_update_account(ua.uap)
+ }
+
+}