fix: more android 34 fixes

This commit is contained in:
Ax333l 2023-10-20 22:59:16 +02:00
parent 32e8a37f33
commit 64ec73d821
No known key found for this signature in database
GPG Key ID: D2B4D85271127D23
4 changed files with 33 additions and 8 deletions

View File

@ -10,6 +10,7 @@
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
@ -33,7 +34,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.ReVancedManager" android:theme="@style/Theme.ReVancedManager"
android:enableOnBackInvokedCallback="true" android:enableOnBackInvokedCallback="true"
tools:targetApi="33"> tools:targetApi="34">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
@ -49,6 +50,17 @@
<service android:name=".service.InstallService" /> <service android:name=".service.InstallService" />
<service android:name=".service.UninstallService" /> <service android:name=".service.UninstallService" />
<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:foregroundServiceType="specialUse"
android:exported="false"
tools:node="merge">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="patching"
/>
</service>
<provider <provider
android:name="androidx.startup.InitializationProvider" android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup" android:authorities="${applicationId}.androidx-startup"

View File

@ -6,7 +6,9 @@ import android.app.NotificationManager
import android.app.PendingIntent import android.app.PendingIntent
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.ServiceInfo
import android.graphics.drawable.Icon import android.graphics.drawable.Icon
import android.os.Build
import android.os.PowerManager import android.os.PowerManager
import android.util.Log import android.util.Log
import android.view.WindowManager import android.view.WindowManager
@ -71,7 +73,12 @@ class PatcherWorker(
private fun String.logFmt() = "$logPrefix $this" private fun String.logFmt() = "$logPrefix $this"
} }
override suspend fun getForegroundInfo() = ForegroundInfo(1, createNotification()) override suspend fun getForegroundInfo() =
ForegroundInfo(
1,
createNotification(),
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE else 0
)
private fun createNotification(): Notification { private fun createNotification(): Notification {
val notificationIntent = Intent(applicationContext, PatcherWorker::class.java) val notificationIntent = Intent(applicationContext, PatcherWorker::class.java)

View File

@ -11,6 +11,7 @@ import android.util.Log
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import app.revanced.manager.R import app.revanced.manager.R
@ -83,8 +84,10 @@ class InstalledAppInfoViewModel(
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
when (intent?.action) { when (intent?.action) {
UninstallService.APP_UNINSTALL_ACTION -> { UninstallService.APP_UNINSTALL_ACTION -> {
val extraStatus = intent.getIntExtra(UninstallService.EXTRA_UNINSTALL_STATUS, -999) val extraStatus =
val extraStatusMessage = intent.getStringExtra(UninstallService.EXTRA_UNINSTALL_STATUS_MESSAGE) intent.getIntExtra(UninstallService.EXTRA_UNINSTALL_STATUS, -999)
val extraStatusMessage =
intent.getStringExtra(UninstallService.EXTRA_UNINSTALL_STATUS_MESSAGE)
if (extraStatus == PackageInstaller.STATUS_SUCCESS) { if (extraStatus == PackageInstaller.STATUS_SUCCESS) {
viewModelScope.launch { viewModelScope.launch {
@ -113,9 +116,11 @@ class InstalledAppInfoViewModel(
} }
} }
app.registerReceiver( ContextCompat.registerReceiver(
app,
uninstallBroadcastReceiver, uninstallBroadcastReceiver,
IntentFilter(UninstallService.APP_UNINSTALL_ACTION) IntentFilter(UninstallService.APP_UNINSTALL_ACTION),
ContextCompat.RECEIVER_NOT_EXPORTED
) )
} }

View File

@ -13,6 +13,7 @@ import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.map import androidx.lifecycle.map
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
@ -162,10 +163,10 @@ class InstallerViewModel(
} }
init { init {
app.registerReceiver(installBroadcastReceiver, IntentFilter().apply { ContextCompat.registerReceiver(app, installBroadcastReceiver, IntentFilter().apply {
addAction(InstallService.APP_INSTALL_ACTION) addAction(InstallService.APP_INSTALL_ACTION)
addAction(UninstallService.APP_UNINSTALL_ACTION) addAction(UninstallService.APP_UNINSTALL_ACTION)
}) }, ContextCompat.RECEIVER_NOT_EXPORTED)
} }
fun exportLogs(context: Context) { fun exportLogs(context: Context) {