@@ -207,3 +207,40 @@ index a13cc9003..fcb996115 100644
207207+ install(EhSSLSocketFactory)
208208 }
209209 }
210+ diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
211+ index c10e69503..7882dcd97 100644
212+ --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
213+ +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
214+ @@ -201,6 +201,7 @@ class MainActivity : EhActivity() {
215+
216+ @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
217+ override fun onCreate(savedInstanceState: Bundle?) {
218+ + bypassVpn()
219+ installSplashScreen().setKeepOnScreenCondition { !initialized }
220+ super.onCreate(savedInstanceState)
221+ setMD3Content {
222+ @@ -518,6 +519,24 @@ class MainActivity : EhActivity() {
223+ }
224+ }
225+
226+ + private fun bypassVpn() {
227+ + val network = connectivityManager.activeNetwork
228+ + val capabilities = connectivityManager.getNetworkCapabilities(network)
229+ + capabilities?.let {
230+ + if (it.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
231+ + val builder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
232+ + NetworkRequest.Builder()
233+ + .addCapability(NetworkCapabilities.NET_CAPABILITY_FOREGROUND)
234+ + .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
235+ + } else {
236+ + NetworkRequest.Builder()
237+ + .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
238+ + }
239+ + connectivityManager.registerNetworkCallback(builder.build(), mNetworkCallback)
240+ + }
241+ + }
242+ + }
243+ +
244+ fun showTip(message: String, useToast: Boolean = false) {
245+ if (useToast || !tipFlow.tryEmit(message)) {
246+ Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
0 commit comments