diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed64060..de677e9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,7 +25,7 @@
diff --git a/app/src/main/java/com/alfred/demo/AlfredNetworkFailureReceiver.kt b/app/src/main/java/com/alfred/demo/AlfredNetworkFailureReceiver.kt
new file mode 100644
index 0000000..7d46535
--- /dev/null
+++ b/app/src/main/java/com/alfred/demo/AlfredNetworkFailureReceiver.kt
@@ -0,0 +1,40 @@
+package com.alfred.demo
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.util.Log
+import com.navi.alfred.model.ErrorMessage
+import com.navi.alfred.network.model.RequestInfo
+import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE
+import com.navi.alfred.utils.AlfredConstants.BROADCAST_ERROR_MESSAGE
+import com.navi.alfred.utils.AlfredConstants.BROADCAST_EXCEPTION
+import com.navi.alfred.utils.AlfredConstants.BROADCAST_REQUEST
+import android.widget.Toast
+import com.navi.alfred.utils.log
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+
+class AlfredNetworkFailureReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ if (intent?.action == BROADCAST_ACTION_TYPE) {
+ try {
+ val exception = intent.getSerializableExtra(BROADCAST_EXCEPTION)
+ val request = intent.getParcelableExtra(BROADCAST_REQUEST)
+ val errorMessage = intent.getParcelableExtra(BROADCAST_ERROR_MESSAGE)
+
+ if (exception is Exception) {
+ CoroutineScope(Dispatchers.IO).launch {
+ Log.d(
+ "AlfredNetworkFailure",
+ "Network Failure exception = $exception, request = $request, errorMessage = $errorMessage"
+ )
+ }
+ }
+ } catch (e: Exception) {
+ e.log()
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/alfred/demo/MainApplication.kt b/app/src/main/java/com/alfred/demo/MainApplication.kt
index e569533..3d9ba35 100644
--- a/app/src/main/java/com/alfred/demo/MainApplication.kt
+++ b/app/src/main/java/com/alfred/demo/MainApplication.kt
@@ -2,12 +2,10 @@ package com.alfred.demo
import android.app.Activity
import android.app.Application
+import android.content.IntentFilter
import android.os.Bundle
import android.util.Log
-import android.view.LayoutInflater
-import android.view.View
-import androidx.appcompat.widget.AppCompatTextView
-import com.alfred.demo.activity.DemoActivity
+import com.alfred.demo.activity.SWWActivity
import com.alfred.demo.activity.MainActivity
import com.navi.alfred.AlfredConfig
import com.navi.alfred.AlfredManager
@@ -17,13 +15,10 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import com.github.anrwatchdog.ANRWatchDog
-import com.navi.alfred.callbacks.NetworkCallback
-import com.navi.alfred.model.ErrorMessage
-import com.navi.alfred.network.AlfredRetrofitProvider
-import okhttp3.Request
-import okhttp3.Response
+import com.navi.alfred.AlfredManager.isAlfredRecordingEnabled
+import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE
-class MainApplication : Application(), Application.ActivityLifecycleCallbacks, NetworkCallback {
+class MainApplication : Application(), Application.ActivityLifecycleCallbacks {
private var appForegroundCounter: Int = 0
override fun onCreate() {
@@ -53,13 +48,8 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
"LINE_NUMBER" to it.cause?.stackTrace?.get(0)?.lineNumber.toString(),
"APP_IN_FOREGROUND" to isAppInForeground().toString()
)
- if (AlfredManager.config.getAlfredStatus() && AlfredManager.config.getAnrEnableStatus()) {
- anrEventProperties["STACK_TRACE"] = it.cause?.stackTrace?.get(0).toString()
- val anrView =
- LayoutInflater.from(applicationContext).inflate(R.layout.anr_screen, null)
- AlfredManager.measureInflatedView(anrView)
- AlfredManager.handleAnrEvent(anrEventProperties, anrView)
- }
+ anrEventProperties["STACK_TRACE"] = it.cause?.stackTrace?.get(0).toString()
+ AlfredManager.handleAnrEvent(anrEventProperties)
}.start()
// Crash Reporting to backend
@@ -76,15 +66,10 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
"LINE_NUMBER" to exception.stackTrace[0]?.lineNumber.toString(),
"APP_IN_FOREGROUND" to isAppInForeground().toString()
)
- if (AlfredManager.config.getAlfredStatus() && AlfredManager.config.getCrashEnableStatus()) {
- exception.stackTrace[0]?.let { stackTraceElement ->
- crashEventProperties["STACK_TRACE"] = stackTraceElement.toString()
- }
- val crashView =
- LayoutInflater.from(applicationContext).inflate(R.layout.crash_screen, null)
- AlfredManager.measureInflatedView(crashView)
- AlfredManager.handleCrashEvent(crashEventProperties, crashView.rootView)
+ exception.stackTrace[0]?.let { stackTraceElement ->
+ crashEventProperties["STACK_TRACE"] = stackTraceElement.toString()
}
+ AlfredManager.handleCrashEvent(crashEventProperties)
} finally {
defaultHandler?.uncaughtException(thread, exception)
}
@@ -110,13 +95,7 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
override fun onActivityStopped(activity: Activity) {
appForegroundCounter--
if (appForegroundCounter == 0) {
- if (AlfredManager.config.getAlfredStatus() && AlfredManager.config.getEnableRecordingStatus()) {
- val appBackgroundView =
- LayoutInflater.from(this)
- .inflate(R.layout.app_background_screen, null)
- AlfredManager.measureInflatedView(appBackgroundView)
- AlfredManager.stopRecording(appBackgroundView)
- }
+ AlfredManager.stopRecording()
}
}
@@ -127,29 +106,23 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
}
private fun startAlfredRecording(activity: Activity) {
- if (AlfredManager.config.getAlfredStatus() && AlfredManager.config.getEnableRecordingStatus()) {
- var screenName: kotlin.String? = null
- var moduleName: kotlin.String? = null
- var thirdPartyScreenView: View? = null
+ if (isAlfredRecordingEnabled()) {
+ val screenName: String?
+ val moduleName: String?
when (activity) {
is MainActivity -> {
screenName = "MainActivity"
moduleName = "Demo App"
}
- is DemoActivity -> {
- screenName = "DemoActivity"
+ is SWWActivity -> {
+ screenName = "SWWActivity"
moduleName = "Demo App"
}
else -> {
screenName = AlfredConstants.THIRD_PARTY_SCREEN
moduleName = AlfredConstants.THIRD_PARTY_MODULE
- thirdPartyScreenView = LayoutInflater.from(applicationContext)
- .inflate(R.layout.third_party_screen, null)
- AlfredManager.measureInflatedView(thirdPartyScreenView)
- thirdPartyScreenView.findViewById(R.id.tv_third_party_name).text =
- "${activity.localClassName}"
}
}
try {
@@ -158,7 +131,6 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
activity.window.decorView.rootView,
screenName,
moduleName,
- thirdPartyScreenView,
onSessionIdGenerated = { sessionId ->
Log.d("Alfred", "Alfred Session ID: $sessionId")
}
@@ -175,14 +147,16 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
private fun getAlfredCruiseInfo() {
Log.d("Alfred", "Alfred - getAlfredCruiseInfo started")
+ val appNetworkReceiver = AlfredNetworkFailureReceiver()
+ val intentFilter = IntentFilter(BROADCAST_ACTION_TYPE)
+ registerReceiver(appNetworkReceiver, intentFilter)
CoroutineScope(Dispatchers.IO).launch {
try {
Log.d(
"Alfred",
"Alfred - getAlfredCruiseInfo started inside try thread = ${Thread.currentThread().name}"
)
- AlfredManager.getCruiseConfig(cruiseApiSuccessful = { response ->
- AlfredRetrofitProvider.setNetworkCallback(this@MainApplication)
+ AlfredManager.getAlfredCruiseInfo(cruiseApiSuccessful = { response ->
Log.d(
"Alfred",
"Alfred - getAlfredCruiseInfo cruiseApiSuccessful h response = $response"
@@ -194,20 +168,4 @@ class MainApplication : Application(), Application.ActivityLifecycleCallbacks, N
}
}
}
-
- override fun onNetworkRequest(request: okhttp3.Request?) {
- Log.d("Alfred", "Alfred - onNetworkRequest request = $request")
- }
-
- override fun onNetworkSuccess(response: Response?) {
- Log.d("Alfred", "Alfred - onNetworkSuccess response = $response")
- }
-
- override fun onNetworkFailure(
- exception: Exception,
- errorMessage: ErrorMessage,
- request: Request
- ) {
- Log.d("Alfred", "Alfred - onNetworkFailure exception = $exception request = $request")
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/alfred/demo/activity/DemoActivity.kt b/app/src/main/java/com/alfred/demo/activity/DemoActivity.kt
deleted file mode 100644
index 1114b06..0000000
--- a/app/src/main/java/com/alfred/demo/activity/DemoActivity.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.alfred.demo.activity
-
-import android.os.Bundle
-import android.view.MotionEvent
-import androidx.appcompat.app.AppCompatActivity
-import com.alfred.demo.R
-import com.navi.alfred.AlfredManager
-
-class DemoActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_demo)
- }
-
- override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
- AlfredManager.handleTouchEvent(
- ev,
- screenName = "Demo Activity",
- moduleName = "Alfred Demo App",
- )
- return super.dispatchTouchEvent(ev)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/alfred/demo/activity/MainActivity.kt b/app/src/main/java/com/alfred/demo/activity/MainActivity.kt
index 8c12858..bbf2bd3 100644
--- a/app/src/main/java/com/alfred/demo/activity/MainActivity.kt
+++ b/app/src/main/java/com/alfred/demo/activity/MainActivity.kt
@@ -16,7 +16,7 @@ class MainActivity : AppCompatActivity() {
val button = findViewById