End Call Android
							parent
							
								
									8aa92d127c
								
							
						
					
					
						commit
						5870e80255
					
				| @ -0,0 +1,318 @@ | ||||
| //package com.mohem_flutter_app | ||||
| //import kotlinx.coroutines.Dispatchers | ||||
| //import kotlinx.coroutines.GlobalScope | ||||
| //import kotlinx.coroutines.launch | ||||
| //import okhttp3.* | ||||
| //import okhttp3.MediaType.Companion.toMediaType | ||||
| //import okhttp3.RequestBody.Companion.toRequestBody | ||||
| //import java.io.IOException | ||||
| // | ||||
| //class NativeIncomingCallDecline { | ||||
| //    fun declineCall(currentUserID: String, targetUserID: String, token: String) { | ||||
| //        println("--------------- Inside Decline Call ----------------") | ||||
| //        val url = "https://apiderichat.hmg.com/api/user/calldecline" | ||||
| //        val payload = """ | ||||
| //        { | ||||
| //            "currentUserId": "$targetUserID", | ||||
| //            "targetUserId": "$currentUserID", | ||||
| //            "secretKey": "derichatmobileuser", | ||||
| //            "targetUserToken": "$token" | ||||
| //        } | ||||
| //        """.trimIndent() | ||||
| // | ||||
| //        val jsonMediaType = "application/json".toMediaType() | ||||
| // | ||||
| //        GlobalScope.launch(Dispatchers.IO) { | ||||
| //            val client = OkHttpClient() | ||||
| //            val requestBody = payload.toRequestBody(jsonMediaType) | ||||
| //            val request = Request.Builder() | ||||
| //                    .url(url) | ||||
| //                    .post(requestBody) | ||||
| //                    .build() | ||||
| // | ||||
| //            client.newCall(request).enqueue(object : Callback { | ||||
| //                override fun onResponse(call: Call, response: Response) { | ||||
| //                    if (response.isSuccessful) { | ||||
| //                        val responseData = response.body?.string() | ||||
| //                        println("API Successful. Response data: $responseData") | ||||
| //                    } else { | ||||
| //                        val errorMessage = response.body?.string() | ||||
| //                        println("API Failed. Error message: $errorMessage") | ||||
| //                    } | ||||
| //                } | ||||
| // | ||||
| //                override fun onFailure(call: Call, e: IOException) { | ||||
| //                    println("API Request Failed. Exception: ${e.message}") | ||||
| //                } | ||||
| //            }) | ||||
| //        } | ||||
| //    } | ||||
| //} | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| //This code is included into CallkitIncomingBroadcastReceiver.kt file under Flutter_callKit_incoming Package | ||||
| //Below is the Whole Code | ||||
| 
 | ||||
| // Implemented Libraries into Kotlin  | ||||
| //  implementation 'com.squareup.okhttp3:okhttp:4.9.1' | ||||
| //  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' | ||||
| 
 | ||||
| //package com.hiennv.flutter_callkit_incoming | ||||
| //import android.annotation.SuppressLint | ||||
| //import android.content.BroadcastReceiver | ||||
| //import android.content.Context | ||||
| //import android.content.Intent | ||||
| //import android.os.Build | ||||
| //import android.os.Bundle | ||||
| //import android.util.Log | ||||
| ////http | ||||
| //import okhttp3.MediaType.Companion.toMediaType | ||||
| //import okhttp3.OkHttpClient | ||||
| //import okhttp3.Request | ||||
| //import okhttp3.RequestBody.Companion.toRequestBody | ||||
| // | ||||
| //// Async | ||||
| //import kotlinx.coroutines.Dispatchers | ||||
| //import kotlinx.coroutines.GlobalScope | ||||
| //import kotlinx.coroutines.launch | ||||
| // | ||||
| //class CallkitIncomingBroadcastReceiver : BroadcastReceiver() { | ||||
| // | ||||
| //    companion object { | ||||
| //        private const val TAG = "CallkitIncomingReceiver" | ||||
| // | ||||
| //        fun getIntent(context: Context, action: String, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    this.action = "${context.packageName}.${action}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentIncoming(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_INCOMING}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentStart(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_START}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentAccept(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_ACCEPT}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentDecline(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_DECLINE}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentEnded(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_ENDED}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentTimeout(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_TIMEOUT}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| // | ||||
| //        fun getIntentCallback(context: Context, data: Bundle?) = | ||||
| //                Intent(context, CallkitIncomingBroadcastReceiver::class.java).apply { | ||||
| //                    action = "${context.packageName}.${CallkitConstants.ACTION_CALL_CALLBACK}" | ||||
| //                    putExtra(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA, data) | ||||
| //                } | ||||
| //    } | ||||
| // | ||||
| // | ||||
| //    @SuppressLint("MissingPermission") | ||||
| //    override fun onReceive(context: Context, intent: Intent) { | ||||
| //        val callkitNotificationManager = CallkitNotificationManager(context) | ||||
| //        val action = intent.action ?: return | ||||
| //        val data = intent.extras?.getBundle(CallkitConstants.EXTRA_CALLKIT_INCOMING_DATA) ?: return | ||||
| // | ||||
| //        when (action) { | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_INCOMING}" -> { | ||||
| //                try { | ||||
| //                    callkitNotificationManager.showIncomingNotification(data) | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_INCOMING, data) | ||||
| //                    addCall(context, Data.fromBundle(data)) | ||||
| //                    if (callkitNotificationManager.incomingChannelEnabled()) { | ||||
| //                        val soundPlayerServiceIntent = | ||||
| //                                Intent(context, CallkitSoundPlayerService::class.java) | ||||
| //                        soundPlayerServiceIntent.putExtras(data) | ||||
| //                        context.startService(soundPlayerServiceIntent) | ||||
| //                    } | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| // | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_START}" -> { | ||||
| //                try { | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_START, data) | ||||
| //                    addCall(context, Data.fromBundle(data), true) | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| // | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_ACCEPT}" -> { | ||||
| //                try { | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_ACCEPT, data) | ||||
| //                    context.stopService(Intent(context, CallkitSoundPlayerService::class.java)) | ||||
| //                    callkitNotificationManager.clearIncomingNotification(data, true) | ||||
| //                    addCall(context, Data.fromBundle(data), true) | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| // | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_DECLINE}" -> { | ||||
| //                try { | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_DECLINE, data) | ||||
| //                    context.stopService(Intent(context, CallkitSoundPlayerService::class.java)) | ||||
| //                    callkitNotificationManager.clearIncomingNotification(data, false) | ||||
| //                    removeCall(context, Data.fromBundle(data)) | ||||
| //                    println("----------- Code By Aamir on 2222-----------------------"); | ||||
| //                    var callData = data.getSerializable(CallkitConstants.EXTRA_CALLKIT_EXTRA) as HashMap<String, Any?> | ||||
| //                    val token = (callData["loginDetails"] as HashMap<*, *>)["token"] as? String | ||||
| //                    val targetUserId = (callData["callerDetails"] as HashMap<*, *>)["targetUserId"] as? Int | ||||
| //                    val currentUserId = (callData["callerDetails"] as HashMap<*, *>)["currentUserId"] as? Int | ||||
| //                    delineCall(currentUserID = currentUserId, targetUserID = targetUserId, token = token) | ||||
| //                    println("----------- Code By Aamir On BroadCast -----------------------"); | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| // | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_ENDED}" -> { | ||||
| //                try { | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_ENDED, data) | ||||
| //                    context.stopService(Intent(context, CallkitSoundPlayerService::class.java)) | ||||
| //                    callkitNotificationManager.clearIncomingNotification(data, false) | ||||
| //                    removeCall(context, Data.fromBundle(data)) | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| // | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_TIMEOUT}" -> { | ||||
| //                try { | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_TIMEOUT, data) | ||||
| //                    context.stopService(Intent(context, CallkitSoundPlayerService::class.java)) | ||||
| //                    if (data.getBoolean(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_SHOW, true)) { | ||||
| //                        callkitNotificationManager.showMissCallNotification(data) | ||||
| //                    } | ||||
| //                    removeCall(context, Data.fromBundle(data)) | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| // | ||||
| //            "${context.packageName}.${CallkitConstants.ACTION_CALL_CALLBACK}" -> { | ||||
| //                try { | ||||
| //                    callkitNotificationManager.clearMissCallNotification(data) | ||||
| //                    sendEventFlutter(CallkitConstants.ACTION_CALL_CALLBACK, data) | ||||
| //                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { | ||||
| //                        val closeNotificationPanel = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS) | ||||
| //                        context.sendBroadcast(closeNotificationPanel) | ||||
| //                    } | ||||
| //                } catch (error: Exception) { | ||||
| //                    Log.e(TAG, null, error) | ||||
| //                } | ||||
| //            } | ||||
| //        } | ||||
| //    } | ||||
| // | ||||
| // | ||||
| //    private fun delineCall(currentUserID: Int?, targetUserID: Int?, token: String?) { | ||||
| //        println("--------------- Inside Decline Call ----------------"); | ||||
| //        val url = "https://apiderichat.hmg.com/api/user/calldecline" | ||||
| //        val payload = """ | ||||
| //        { | ||||
| //            "currentUserId": $targetUserID, | ||||
| //            "targetUserId": $currentUserID, | ||||
| //            "secretKey": "derichatmobileuser", | ||||
| //            "targetUserToken": "$token" | ||||
| //        } | ||||
| //    """.trimIndent() | ||||
| // | ||||
| // | ||||
| //        val jsonMediaType = "application/json".toMediaType() | ||||
| // | ||||
| //        GlobalScope.launch(Dispatchers.IO) { | ||||
| //            val client = OkHttpClient() | ||||
| //            val requestBody = payload.toRequestBody(jsonMediaType) | ||||
| //            val request = Request.Builder() | ||||
| //                    .url(url) | ||||
| //                    .post(requestBody) | ||||
| //                    .build() | ||||
| // | ||||
| //            client.newCall(request).execute().use { response -> | ||||
| //                if (response.isSuccessful) { | ||||
| //                    val responseData = response.body?.string() | ||||
| //                    println("API Successful. Response data: $responseData") | ||||
| //                } else { | ||||
| //                    val errorMessage = response.body?.string() | ||||
| //                    println("API Failed. Error message: $errorMessage") | ||||
| //                } | ||||
| //            } | ||||
| //        } | ||||
| //         | ||||
| // | ||||
| //    } | ||||
| // | ||||
| // | ||||
| //    private fun sendEventFlutter(event: String, data: Bundle) { | ||||
| //        val android = mapOf( | ||||
| //                "isCustomNotification" to data.getBoolean(CallkitConstants.EXTRA_CALLKIT_IS_CUSTOM_NOTIFICATION, false), | ||||
| //                "isCustomSmallExNotification" to data.getBoolean( | ||||
| //                        CallkitConstants.EXTRA_CALLKIT_IS_CUSTOM_SMALL_EX_NOTIFICATION, | ||||
| //                        false | ||||
| //                ), | ||||
| //                "ringtonePath" to data.getString(CallkitConstants.EXTRA_CALLKIT_RINGTONE_PATH, ""), | ||||
| //                "backgroundColor" to data.getString(CallkitConstants.EXTRA_CALLKIT_BACKGROUND_COLOR, ""), | ||||
| //                "backgroundUrl" to data.getString(CallkitConstants.EXTRA_CALLKIT_BACKGROUND_URL, ""), | ||||
| //                "actionColor" to data.getString(CallkitConstants.EXTRA_CALLKIT_ACTION_COLOR, ""), | ||||
| //                "incomingCallNotificationChannelName" to data.getString( | ||||
| //                        CallkitConstants.EXTRA_CALLKIT_INCOMING_CALL_NOTIFICATION_CHANNEL_NAME, | ||||
| //                        "" | ||||
| //                ), | ||||
| //                "missedCallNotificationChannelName" to data.getString( | ||||
| //                        CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_NOTIFICATION_CHANNEL_NAME, | ||||
| //                        "" | ||||
| //                ), | ||||
| //        ) | ||||
| //        val notification = mapOf( | ||||
| //                "id" to data.getInt(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_ID), | ||||
| //                "showNotification" to data.getBoolean(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_SHOW), | ||||
| //                "count" to data.getInt(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_COUNT), | ||||
| //                "subtitle" to data.getString(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_SUBTITLE), | ||||
| //                "callbackText" to data.getString(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_CALLBACK_TEXT), | ||||
| //                "isShowCallback" to data.getBoolean(CallkitConstants.EXTRA_CALLKIT_MISSED_CALL_CALLBACK_SHOW), | ||||
| //        ) | ||||
| //        val forwardData = mapOf( | ||||
| //                "id" to data.getString(CallkitConstants.EXTRA_CALLKIT_ID, ""), | ||||
| //                "nameCaller" to data.getString(CallkitConstants.EXTRA_CALLKIT_NAME_CALLER, ""), | ||||
| //                "avatar" to data.getString(CallkitConstants.EXTRA_CALLKIT_AVATAR, ""), | ||||
| //                "number" to data.getString(CallkitConstants.EXTRA_CALLKIT_HANDLE, ""), | ||||
| //                "type" to data.getInt(CallkitConstants.EXTRA_CALLKIT_TYPE, 0), | ||||
| //                "duration" to data.getLong(CallkitConstants.EXTRA_CALLKIT_DURATION, 0L), | ||||
| //                "textAccept" to data.getString(CallkitConstants.EXTRA_CALLKIT_TEXT_ACCEPT, ""), | ||||
| //                "textDecline" to data.getString(CallkitConstants.EXTRA_CALLKIT_TEXT_DECLINE, ""), | ||||
| //                "extra" to data.getSerializable(CallkitConstants.EXTRA_CALLKIT_EXTRA)!!, | ||||
| //                "missedCallNotification" to notification, | ||||
| //                "android" to android | ||||
| //        ) | ||||
| //        FlutterCallkitIncomingPlugin.sendEvent(event, forwardData) | ||||
| //    } | ||||
| //} | ||||
					Loading…
					
					
				
		Reference in New Issue