fix(download): preserve SAF and defer background starts

This commit is contained in:
zarzet
2026-08-09 05:23:47 +07:00
parent 2612da81c3
commit a59c749089
9 changed files with 271 additions and 33 deletions
@@ -0,0 +1,18 @@
package com.zarz.spotiflac
/** Maps Android/OEM foreground-service launch denials to a stable Dart code. */
object ForegroundServiceStartPolicy {
const val START_NOT_ALLOWED_CODE = "foreground_service_start_not_allowed"
fun isStartNotAllowed(error: Throwable): Boolean {
if (error.javaClass.name == "android.app.ForegroundServiceStartNotAllowedException") {
return true
}
val message = error.message.orEmpty()
return message.contains("startForegroundService() not allowed", ignoreCase = true) ||
message.contains("mAllowStartForeground false", ignoreCase = true)
}
fun errorCode(error: Throwable): String =
if (isStartNotAllowed(error)) START_NOT_ALLOWED_CODE else "ERROR"
}
@@ -2326,7 +2326,11 @@ class MainActivity: FlutterFragmentActivity() {
else -> result.notImplemented()
}
} catch (e: Exception) {
result.error("ERROR", e.message, null)
result.error(
ForegroundServiceStartPolicy.errorCode(e),
e.message,
null,
)
}
}
}