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
This commit is contained in:
parent
f978f55e7f
commit
dfd0b4d0e5
3 changed files with 23 additions and 11 deletions
|
@ -38,6 +38,7 @@
|
||||||
android:theme="@style/NoActionBar"
|
android:theme="@style/NoActionBar"
|
||||||
android:fullBackupContent="@xml/backup_content"
|
android:fullBackupContent="@xml/backup_content"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
|
android:hasFragileUserData="false"
|
||||||
tools:targetApi="s">
|
tools:targetApi="s">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
|
|
|
@ -231,7 +231,10 @@ class AmneziaActivity : QtActivity() {
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
Log.d(TAG, "Stop Amnezia activity")
|
Log.d(TAG, "Stop Amnezia activity")
|
||||||
doUnbindService()
|
doUnbindService()
|
||||||
|
mainScope.launch {
|
||||||
|
qtInitialized.await()
|
||||||
QtAndroidController.onServiceDisconnected()
|
QtAndroidController.onServiceDisconnected()
|
||||||
|
}
|
||||||
super.onStop()
|
super.onStop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -543,7 +546,7 @@ class AmneziaActivity : QtActivity() {
|
||||||
}
|
}
|
||||||
}.also {
|
}.also {
|
||||||
startActivityForResult(it, OPEN_FILE_ACTION_CODE, ActivityResultHandler(
|
startActivityForResult(it, OPEN_FILE_ACTION_CODE, ActivityResultHandler(
|
||||||
onSuccess = {
|
onAny = {
|
||||||
val uri = it?.data?.toString() ?: ""
|
val uri = it?.data?.toString() ?: ""
|
||||||
Log.d(TAG, "Open file: $uri")
|
Log.d(TAG, "Open file: $uri")
|
||||||
mainScope.launch {
|
mainScope.launch {
|
||||||
|
|
|
@ -88,18 +88,26 @@ class NetworkState(
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
connectivityManager.registerBestMatchingNetworkCallback(networkRequest, networkCallback, handler)
|
connectivityManager.registerBestMatchingNetworkCallback(networkRequest, networkCallback, handler)
|
||||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
val numberAttempts = 3
|
||||||
|
var attemptCount = 0
|
||||||
|
while(true) {
|
||||||
try {
|
try {
|
||||||
connectivityManager.requestNetwork(networkRequest, networkCallback, handler)
|
connectivityManager.requestNetwork(networkRequest, networkCallback, handler)
|
||||||
|
break
|
||||||
} catch (e: SecurityException) {
|
} catch (e: SecurityException) {
|
||||||
Log.e(TAG, "Failed to bind network listener: $e")
|
Log.e(TAG, "Failed to bind network listener: $e")
|
||||||
// Android 11 bug: https://issuetracker.google.com/issues/175055271
|
// Android 11 bug: https://issuetracker.google.com/issues/175055271
|
||||||
if (e.message?.startsWith("Package android does not belong to") == true) {
|
if (e.message?.startsWith("Package android does not belong to") == true) {
|
||||||
|
if (++attemptCount > numberAttempts) {
|
||||||
|
throw e
|
||||||
|
}
|
||||||
delay(1000)
|
delay(1000)
|
||||||
connectivityManager.requestNetwork(networkRequest, networkCallback, handler)
|
continue
|
||||||
} else {
|
} else {
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
connectivityManager.requestNetwork(networkRequest, networkCallback)
|
connectivityManager.requestNetwork(networkRequest, networkCallback)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue