From dfd0b4d0e5e053a277948d23c45f6c2e69eae2e0 Mon Sep 17 00:00:00 2001 From: albexk Date: Tue, 6 Aug 2024 12:44:51 +0300 Subject: [PATCH] Fix Android bugs (#941) * Add an explicit value for the hasFragileUserData parameter * Fix app crashes when canceling file opening * Fix requestNetwork bug for Android 11 * Fix activity onStop method --- client/android/AndroidManifest.xml | 1 + .../src/org/amnezia/vpn/AmneziaActivity.kt | 7 +++-- .../utils/src/main/kotlin/net/NetworkState.kt | 26 ++++++++++++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/client/android/AndroidManifest.xml b/client/android/AndroidManifest.xml index 3276eaa84..c1c40b52a 100644 --- a/client/android/AndroidManifest.xml +++ b/client/android/AndroidManifest.xml @@ -38,6 +38,7 @@ android:theme="@style/NoActionBar" android:fullBackupContent="@xml/backup_content" android:dataExtractionRules="@xml/data_extraction_rules" + android:hasFragileUserData="false" tools:targetApi="s"> = Build.VERSION_CODES.S) { connectivityManager.registerBestMatchingNetworkCallback(networkRequest, networkCallback, handler) } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - try { - connectivityManager.requestNetwork(networkRequest, networkCallback, handler) - } catch (e: SecurityException) { - Log.e(TAG, "Failed to bind network listener: $e") - // Android 11 bug: https://issuetracker.google.com/issues/175055271 - if (e.message?.startsWith("Package android does not belong to") == true) { - delay(1000) + val numberAttempts = 3 + var attemptCount = 0 + while(true) { + try { connectivityManager.requestNetwork(networkRequest, networkCallback, handler) - } else { - throw e + break + } catch (e: SecurityException) { + Log.e(TAG, "Failed to bind network listener: $e") + // Android 11 bug: https://issuetracker.google.com/issues/175055271 + if (e.message?.startsWith("Package android does not belong to") == true) { + if (++attemptCount > numberAttempts) { + throw e + } + delay(1000) + continue + } else { + throw e + } } } } else {