diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt index 71837467..403774ac 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt @@ -1,6 +1,8 @@ package com.v2ray.ang.extension import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities import android.os.Build import android.widget.Toast import com.v2ray.ang.AngApplication @@ -55,3 +57,19 @@ val URI.idnHost: String get() = host?.replace("[", "")?.replace("]", "") ?: "" fun String.removeWhiteSpace(): String = replace("\\s+".toRegex(), "") + +val Context.isNetworkConnected: Boolean + get() { + val manager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + manager.getNetworkCapabilities(manager.activeNetwork)?.let { + it.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || + it.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || + it.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) || + it.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) || + it.hasTransport(NetworkCapabilities.TRANSPORT_VPN) + } ?: false + else + @Suppress("DEPRECATION") + manager.activeNetworkInfo?.isConnectedOrConnecting == true + } \ No newline at end of file diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index 05fffbbd..8be75d45 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -33,6 +33,7 @@ import com.v2ray.ang.R import com.v2ray.ang.databinding.ActivityMainBinding import com.v2ray.ang.databinding.LayoutProgressBinding import com.v2ray.ang.dto.EConfigType +import com.v2ray.ang.extension.isNetworkConnected import com.v2ray.ang.extension.toast import com.v2ray.ang.helper.SimpleItemTouchHelperCallback import com.v2ray.ang.service.V2RayServiceManager @@ -200,10 +201,14 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList } fun startV2Ray() { - if (mainStorage?.decodeString(MmkvManager.KEY_SELECTED_SERVER).isNullOrEmpty()) { - return + if (isNetworkConnected) { + if (mainStorage?.decodeString(MmkvManager.KEY_SELECTED_SERVER).isNullOrEmpty()) { + return + } + V2RayServiceManager.startV2Ray(this) + } else { + ToastCompat.makeText(this, getString(R.string.connection_test_fail), Toast.LENGTH_LONG).show() } - V2RayServiceManager.startV2Ray(this) } fun restartV2Ray() {