fix: launch CallActivity when call is picked from notification

- add CallActivity.getStartIntent method to get the start intent for CallActivity and update in CallNotificationManager and CallService where the CallActivity is started
- in CallActionReceiver, start the CallActivity before answering the call
This commit is contained in:
darthpaul
2021-09-20 00:02:53 +01:00
parent dd6316ae81
commit bdab26838e
4 changed files with 16 additions and 7 deletions

View File

@ -3,6 +3,7 @@ package com.simplemobiletools.dialer.activities
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.KeyguardManager import android.app.KeyguardManager
import android.content.Context import android.content.Context
import android.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.media.AudioManager import android.media.AudioManager
import android.os.Bundle import android.os.Bundle
@ -29,6 +30,14 @@ import kotlinx.android.synthetic.main.activity_call.*
import kotlinx.android.synthetic.main.dialpad.* import kotlinx.android.synthetic.main.dialpad.*
class CallActivity : SimpleActivity() { class CallActivity : SimpleActivity() {
companion object {
fun getStartIntent(context: Context): Intent {
val openAppIntent = Intent(context, CallActivity::class.java)
openAppIntent.flags = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT or Intent.FLAG_ACTIVITY_NEW_TASK
return openAppIntent
}
}
private var isSpeakerOn = false private var isSpeakerOn = false
private var isMicrophoneOn = true private var isMicrophoneOn = true
private var isCallEnded = false private var isCallEnded = false

View File

@ -39,8 +39,7 @@ class CallNotificationManager(private val context: Context) {
} }
} }
val openAppIntent = Intent(context, CallActivity::class.java) val openAppIntent = CallActivity.getStartIntent(context)
openAppIntent.flags = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
val openAppPendingIntent = PendingIntent.getActivity(context, 0, openAppIntent, 0) val openAppPendingIntent = PendingIntent.getActivity(context, 0, openAppIntent, 0)
val acceptCallIntent = Intent(context, CallActionReceiver::class.java) val acceptCallIntent = Intent(context, CallActionReceiver::class.java)

View File

@ -3,6 +3,7 @@ package com.simplemobiletools.dialer.receivers
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import com.simplemobiletools.dialer.activities.CallActivity
import com.simplemobiletools.dialer.helpers.ACCEPT_CALL import com.simplemobiletools.dialer.helpers.ACCEPT_CALL
import com.simplemobiletools.dialer.helpers.CallManager import com.simplemobiletools.dialer.helpers.CallManager
import com.simplemobiletools.dialer.helpers.DECLINE_CALL import com.simplemobiletools.dialer.helpers.DECLINE_CALL
@ -10,7 +11,10 @@ import com.simplemobiletools.dialer.helpers.DECLINE_CALL
class CallActionReceiver : BroadcastReceiver() { class CallActionReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
when (intent.action) { when (intent.action) {
ACCEPT_CALL -> CallManager.accept() ACCEPT_CALL -> {
context.startActivity(CallActivity.getStartIntent(context))
CallManager.accept()
}
DECLINE_CALL -> CallManager.reject() DECLINE_CALL -> CallManager.reject()
} }
} }

View File

@ -1,6 +1,5 @@
package com.simplemobiletools.dialer.services package com.simplemobiletools.dialer.services
import android.content.Intent
import android.telecom.Call import android.telecom.Call
import android.telecom.InCallService import android.telecom.InCallService
import com.simplemobiletools.dialer.activities.CallActivity import com.simplemobiletools.dialer.activities.CallActivity
@ -18,9 +17,7 @@ class CallService : InCallService() {
override fun onCallAdded(call: Call) { override fun onCallAdded(call: Call) {
super.onCallAdded(call) super.onCallAdded(call)
val intent = Intent(this, CallActivity::class.java) startActivity(CallActivity.getStartIntent(this))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
CallManager.call = call CallManager.call = call
CallManager.inCallService = this CallManager.inCallService = this
CallManager.registerCallback(callListener) CallManager.registerCallback(callListener)