fix: Screen turns off while patching due to wrong WakeLock

This commit is contained in:
kitadai31 2024-08-18 15:01:54 +09:00
parent 747017a5f9
commit d546045066
3 changed files with 14 additions and 16 deletions

View file

@ -15,7 +15,6 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<queries>
<intent>

View file

@ -9,9 +9,7 @@ import android.content.Intent
import android.content.pm.ServiceInfo
import android.graphics.drawable.Icon
import android.os.Build
import android.os.PowerManager
import android.util.Log
import android.view.WindowManager
import androidx.core.content.ContextCompat
import androidx.work.ForegroundInfo
import androidx.work.WorkerParameters
@ -108,21 +106,9 @@ class PatcherWorker(
Log.d(tag, "Failed to set foreground info:", e)
}
val wakeLock: PowerManager.WakeLock =
(applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager)
.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, "$tag::Patcher")
.apply {
acquire(10 * 60 * 1000L)
Log.d(tag, "Acquired wakelock.")
}
val args = workerRepository.claimInput(this)
return try {
runPatcher(args)
} finally {
wakeLock.release()
}
return runPatcher(args)
}
private suspend fun runPatcher(args: Args): Result {

View file

@ -1,5 +1,7 @@
package app.revanced.manager.ui.screen
import android.app.Activity
import android.view.WindowManager
import androidx.activity.compose.BackHandler
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
@ -25,6 +27,7 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
@ -85,6 +88,16 @@ fun PatcherScreen(
}
}
if (patcherSucceeded == null) {
DisposableEffect(Unit) {
val window = (context as Activity).window
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
onDispose {
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
}
if (showInstallPicker)
InstallPickerDialog(
onDismiss = { showInstallPicker = false },