From f08a275a862d3dc32244e97dad40eddecf88b085 Mon Sep 17 00:00:00 2001 From: shidqizh <shidqizh@gmail.com> Date: Mon, 1 Apr 2024 04:54:01 +0700 Subject: [PATCH] network connectivity --- app/src/main/AndroidManifest.xml | 2 ++ .../java/com/atm/bondowowo/LoginActivity.kt | 6 ++++ .../java/com/atm/bondowowo/MainActivity.kt | 6 ++++ .../ui/settings/ExportToFileActivity.kt | 5 +++ .../ui/settings/SendEmailActivity.kt | 9 +++-- .../ui/transaction/TransactionActivity.kt | 6 ++++ .../com/atm/bondowowo/utils/DialogHelper.kt | 18 ++++++++++ .../com/atm/bondowowo/utils/NetworkHelper.kt | 34 +++++++++++++++++++ 8 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt create mode 100644 app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 75284d4..4b978a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,9 +2,11 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" diff --git a/app/src/main/java/com/atm/bondowowo/LoginActivity.kt b/app/src/main/java/com/atm/bondowowo/LoginActivity.kt index 1ad62f5..9626277 100644 --- a/app/src/main/java/com/atm/bondowowo/LoginActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/LoginActivity.kt @@ -7,6 +7,8 @@ import android.widget.EditText import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.atm.bondowowo.data.model.LoginRequest +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper import com.atm.bondowowo.utils.NetworkUtils.apiService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -23,6 +25,10 @@ class LoginActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + CoroutineScope(Dispatchers.Main).launch { if (isUserAuthenticated()) { navigateToMainActivity() diff --git a/app/src/main/java/com/atm/bondowowo/MainActivity.kt b/app/src/main/java/com/atm/bondowowo/MainActivity.kt index 0f98f9e..c92c7c0 100644 --- a/app/src/main/java/com/atm/bondowowo/MainActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/MainActivity.kt @@ -8,6 +8,8 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.setupWithNavController import com.atm.bondowowo.databinding.ActivityMainBinding +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper import com.atm.bondowowo.utils.NetworkUtils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -22,6 +24,10 @@ class MainActivity : AppCompatActivity() { binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + CoroutineScope(Dispatchers.Main).launch { if (!isUserAuthenticated()) { navigateToLoginActivity() diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt index b7d354f..7b9366f 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt @@ -5,6 +5,8 @@ import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.atm.bondowowo.R import com.atm.bondowowo.data.entity.Transaction +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper import org.apache.poi.xssf.usermodel.XSSFWorkbook import java.io.File import java.io.FileOutputStream @@ -13,6 +15,9 @@ class ExportToFileActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.fragment_transaction) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } val transactions: ArrayList<Transaction>? = intent.getSerializableExtra("transactions") as? ArrayList<Transaction> diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt index 7ef6c70..b8ce183 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt @@ -8,9 +8,8 @@ import androidx.core.content.FileProvider import com.atm.bondowowo.R import java.io.File import android.content.pm.PackageManager - - - +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper class SendEmailActivity : AppCompatActivity() { @@ -19,6 +18,10 @@ class SendEmailActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.fragment_transaction) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + sendEmailWithAttachment2() } diff --git a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt index 5fca1ab..96f266e 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt @@ -5,6 +5,8 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.atm.bondowowo.MainActivity import com.atm.bondowowo.R +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper class TransactionActivity : AppCompatActivity(), TransactionInputFragment.TransactionInputListener { @@ -12,6 +14,10 @@ class TransactionActivity : AppCompatActivity(), TransactionInputFragment.Transa super.onCreate(savedInstanceState) setContentView(R.layout.activity_transaction) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + val transactionInputFragment = TransactionInputFragment() // Get the id passed from the intent diff --git a/app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt b/app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt new file mode 100644 index 0000000..4d72e28 --- /dev/null +++ b/app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt @@ -0,0 +1,18 @@ +package com.atm.bondowowo.utils + +import android.app.AlertDialog +import android.content.Context +import android.content.DialogInterface + +object DialogHelper { + fun showNoInternetDialog(context: Context) { + val builder = AlertDialog.Builder(context) + builder.setTitle("No Internet Connection") + builder.setMessage("Please check your internet connection and try again.") + builder.setPositiveButton("OK", DialogInterface.OnClickListener { dialog, _ -> + dialog.dismiss() + }) + val dialog = builder.create() + dialog.show() + } +} diff --git a/app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt b/app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt new file mode 100644 index 0000000..9f55ff3 --- /dev/null +++ b/app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt @@ -0,0 +1,34 @@ +package com.atm.bondowowo.utils + +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.os.Build + +object NetworkHelper { + fun isInternetAvailable(context: Context): Boolean { + var result = false + val connectivityManager = + context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + connectivityManager?.run { + connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)?.run { + result = when { + hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true + hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true + else -> false + } + } + } + } else { + connectivityManager?.run { + connectivityManager.activeNetworkInfo?.run { + if (type == ConnectivityManager.TYPE_WIFI || type == ConnectivityManager.TYPE_MOBILE) { + result = true + } + } + } + } + return result + } +} -- GitLab