From 5f0d84eb97939df2eedebcb0904507a32791b4a6 Mon Sep 17 00:00:00 2001 From: angrezichatterbox Date: Tue, 10 Dec 2024 21:33:18 +0530 Subject: [PATCH] feat:Added check for wheather internet connection was available for a network --- .../commons/navtab/MoreBottomSheetFragment.kt | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.kt b/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.kt index 77d312876..60532c091 100644 --- a/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.kt @@ -6,12 +6,19 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.net.ConnectivityManager +import android.net.Network +import android.net.NetworkCapabilities +import android.net.NetworkInfo import android.net.Uri +import android.net.wifi.WifiManager +import android.os.Build import android.os.Bundle +import android.telephony.TelephonyManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.annotation.RequiresApi import androidx.appcompat.app.AlertDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import fr.free.nrw.commons.AboutActivity @@ -171,7 +178,7 @@ class MoreBottomSheetFragment : BottomSheetDialogFragment() { fun uploadFeedback(feedback: Feedback) { val feedbackContentCreator = FeedbackContentCreator(requireContext(), feedback) - if (!isNetworkAvailable(requireContext())) { + if (!isInternetConnectionAvailable(requireContext())) { Toast.makeText(requireContext(), R.string.error_feedback, Toast.LENGTH_LONG).show() return } @@ -201,12 +208,20 @@ class MoreBottomSheetFragment : BottomSheetDialogFragment() { /** * This method is to check whether internet connection is available or not */ - fun isNetworkAvailable(context: Context): Boolean { + fun isInternetConnectionAvailable(context: Context): Boolean { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - val activeNetwork = connectivityManager.activeNetworkInfo - return activeNetwork != null && activeNetwork.isConnected + + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + val activeNetwork: Network? = connectivityManager.activeNetwork + val networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork) + networkCapabilities?.hasCapability(android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET) == true + } else { + val activeNetworkInfo: NetworkInfo? = connectivityManager.activeNetworkInfo + activeNetworkInfo != null && activeNetworkInfo.isConnected + } } + /** * This method shows the alert dialog when a user wants to send feedback about the app. */