diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1bc6375..280f004 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,8 +13,8 @@ android { applicationId = "com.smbfast.app" minSdk = 26 targetSdk = 35 - versionCode = 28 - versionName = "1.22.1" + versionCode = 29 + versionName = "1.23.0" } signingConfigs { diff --git a/app/src/main/java/com/smbfast/app/App.kt b/app/src/main/java/com/smbfast/app/App.kt index 931c3ac..240b4fc 100644 --- a/app/src/main/java/com/smbfast/app/App.kt +++ b/app/src/main/java/com/smbfast/app/App.kt @@ -2,8 +2,6 @@ package com.smbfast.app import android.app.Application import com.smbfast.app.smb.SmbClientPool -import com.smbfast.app.transfer.Notifier -import com.smbfast.app.transfer.Status import com.smbfast.app.transfer.TransferManager import com.smbfast.app.util.CrashLog import org.bouncycastle.jce.provider.BouncyCastleProvider @@ -23,12 +21,8 @@ class App : Application() { Security.addProvider(BouncyCastleProvider()) } } - // 常驻"就绪"通知(含灵动岛自检):普通通知直发,不启动前台服务—— - // 避免在 FGS 被系统限制(dataSync 配额/侧载策略)时整条链路静默失效 - runCatching { - val running = transferManager.items.value.filter { it.status == Status.RUNNING } - Notifier.notifyState(this, running) - } + // 通知策略:仅在下载/上传进行期间显示进度通知(TransferManager 直发), + // 空闲时不挂常驻通知 } override fun onTerminate() { diff --git a/app/src/main/java/com/smbfast/app/transfer/Notifier.kt b/app/src/main/java/com/smbfast/app/transfer/Notifier.kt index a7a2e10..5066e31 100644 --- a/app/src/main/java/com/smbfast/app/transfer/Notifier.kt +++ b/app/src/main/java/com/smbfast/app/transfer/Notifier.kt @@ -55,14 +55,19 @@ object Notifier { runCatching { NotificationManagerCompat.from(ctx).notify(NOTIF_ID, n) } } - /** 按当前任务状态立即重发一条通知(设置切换岛开关/模式后调用) */ + /** 按当前任务状态发通知;无传输任务时改为清除通知(仅在传输期间显示) */ fun refresh(ctx: Context) { val running = runCatching { (ctx.applicationContext as? com.smbfast.app.App) ?.transferManager?.items?.value ?.filter { it.status == Status.RUNNING } }.getOrNull() ?: emptyList() - notifyState(ctx, running) + if (running.isEmpty()) cancelProgress(ctx) else notifyState(ctx, running) + } + + /** 传输全部结束:移除进度通知(空闲不显示常驻通知) */ + fun cancelProgress(ctx: Context) { + runCatching { NotificationManagerCompat.from(ctx).cancel(NOTIF_ID) } } /** 发一条独立 id 的测试通知,验证通道可见性。返回是否成功 */ diff --git a/app/src/main/java/com/smbfast/app/transfer/TransferManager.kt b/app/src/main/java/com/smbfast/app/transfer/TransferManager.kt index 72338e5..c492ca6 100644 --- a/app/src/main/java/com/smbfast/app/transfer/TransferManager.kt +++ b/app/src/main/java/com/smbfast/app/transfer/TransferManager.kt @@ -79,10 +79,10 @@ class TransferManager(private val appContext: Context) { .onFailure { com.smbfast.app.util.CrashLog.append("notify", it) } } } else if (hadRunning) { - // 全部结束:恢复"就绪"常驻态 + // 全部结束:直接移除通知(空闲不显示常驻通知) hadRunning = false lastNotify = 0 - runCatching { Notifier.notifyState(appContext, emptyList()) } + runCatching { Notifier.cancelProgress(appContext) } } } }