diff --git a/app/src/main/java/com/example/bondoman/ScanActivity.kt b/app/src/main/java/com/example/bondoman/ScanActivity.kt
index f6ab871ce0172d6a47c2c7b5f940896c01b9099c..782af9b9348ecfbdd7afa737d15cc6f7207341c6 100644
--- a/app/src/main/java/com/example/bondoman/ScanActivity.kt
+++ b/app/src/main/java/com/example/bondoman/ScanActivity.kt
@@ -8,6 +8,7 @@ import android.net.Uri
 import android.os.Build
 import android.os.Bundle
 import android.provider.MediaStore
+import android.widget.Button
 import android.widget.Toast
 import androidx.activity.result.ActivityResultLauncher
 import androidx.activity.result.contract.ActivityResultContracts
@@ -25,6 +26,7 @@ import com.example.bondoman.repository.ScanRepository
 import com.example.bondoman.room.TransactionDAO
 import com.example.bondoman.room.TransactionDatabase
 import com.example.bondoman.room.TransactionEntity
+import com.example.bondoman.utils.NetworkUtils
 import com.google.android.filament.View
 import com.google.android.gms.maps.model.LatLng
 import com.google.android.libraries.places.api.model.Place
@@ -50,31 +52,35 @@ class ScanActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
-        // Initialize the permission request launcher
-        requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
-            val allGranted = permissions.all { it.value }
+        if (checkInternetConnection()) {
+            // Initialize the permission request launcher
+            requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
+                val allGranted = permissions.all { it.value }
 
-            if (allGranted) {
-                launchCamera()
-            } else {
-                Toast.makeText(this, "Camera permission is required to use the camera", Toast.LENGTH_SHORT).show()
-                finish()
+                if (allGranted) {
+                    launchCamera()
+                } else {
+                    Toast.makeText(this, "Camera permission is required to use the camera", Toast.LENGTH_SHORT).show()
+                    finish()
+                }
             }
-        }
 
-        // Initialize the take picture launcher
-        takePictureLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
-            if (success) {
-                setupViewAfterPhotoTaken()
-            } else {
-                finish()
+            // Initialize the take picture launcher
+            takePictureLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
+                if (success) {
+                    setupViewAfterPhotoTaken()
+                } else {
+                    finish()
+                }
             }
-        }
 
-        supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        supportActionBar?.setBackgroundDrawable(AppCompatResources.getDrawable(this, R.color.gray_800))
+            supportActionBar?.setDisplayHomeAsUpEnabled(true)
+            supportActionBar?.setBackgroundDrawable(AppCompatResources.getDrawable(this, R.color.gray_800))
 
-        transactionDAO = TransactionDatabase.getDatabase(applicationContext).transactionDAO
+            transactionDAO = TransactionDatabase.getDatabase(applicationContext).transactionDAO
+        } else {
+            finish()
+        }
     }
 
     override fun onResume() {
@@ -264,4 +270,14 @@ class ScanActivity : AppCompatActivity() {
         }
         return null
     }
+
+    private fun checkInternetConnection(): Boolean {
+        val networkUtils = NetworkUtils(this)
+        return if (networkUtils.isOnline()) {
+            true
+        } else {
+            Toast.makeText(this, "No internet connection found.", Toast.LENGTH_SHORT).show()
+            false
+        }
+    }
 }
diff --git a/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt b/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt
index 628148c86509022096e506057aa2b9a79445cd18..72b817b972ef90090df28dc94a0ed4ea728d30ac 100644
--- a/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt
+++ b/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt
@@ -12,6 +12,8 @@ class NetworkUtils(private val context: Context) {
     private var connectivityManager: ConnectivityManager =
         context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
 
+    private var networkCallback: ConnectivityManager.NetworkCallback? = null
+
     fun isOnline(): Boolean {
         val network = connectivityManager.activeNetwork ?: return false
         val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
@@ -23,15 +25,22 @@ class NetworkUtils(private val context: Context) {
             .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
             .build()
 
-        connectivityManager.registerNetworkCallback(networkRequest, object : ConnectivityManager.NetworkCallback() {
+        networkCallback = object : ConnectivityManager.NetworkCallback() {
             override fun onLost(network: Network) {
                 super.onLost(network)
                 Toast.makeText(context, "Internet connection lost", Toast.LENGTH_SHORT).show()
             }
-        })
+        }
+
+        connectivityManager.registerNetworkCallback(networkRequest,
+            networkCallback as ConnectivityManager.NetworkCallback
+        )
     }
 
     fun unregisterNetworkCallback() {
-        connectivityManager.unregisterNetworkCallback(ConnectivityManager.NetworkCallback())
+        if (networkCallback != null) {
+            connectivityManager.unregisterNetworkCallback(networkCallback!!)
+            networkCallback = null
+        }
     }
 }