Updater: Define foregroundServiceType

Required since Android 14 [1].

11-16 14:05:45.363 20623 20623 E AndroidRuntime: FATAL EXCEPTION: main
11-16 14:05:45.363 20623 20623 E AndroidRuntime: Process: org.lineageos.updater, PID: 20623
11-16 14:05:45.363 20623 20623 E AndroidRuntime: android.app.MissingForegroundServiceTypeException: Starting FGS without a type  callerApp=ProcessRecord{6d14558 20623:org.lineageos.updater/u0a149} targetSDK=34

[1] https://developer.android.com/about/versions/14/changes/fgs-types-required

Change-Id: Id6217424177b94d37621062fb1a55778f1dabbab
This commit is contained in:
Bartłomiej Rudecki
2023-11-16 11:46:59 +01:00
parent 0b1821c9dc
commit 7d9b6c0c64
3 changed files with 21 additions and 5 deletions

View File

@@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" /> <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="android.permission.REBOOT" />
@@ -43,8 +44,18 @@
</intent-filter> </intent-filter>
</activity> </activity>
<service android:name=".controller.UpdaterService" /> <service
<service android:name=".ExportUpdateService" /> android:name=".controller.UpdaterService"
android:foregroundServiceType="specialUse">
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="updater"/>
</service>
<service
android:name=".ExportUpdateService"
android:foregroundServiceType="specialUse">
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="updater"/>
</service>
<receiver android:name=".UpdaterReceiver" android:exported="false"> <receiver android:name=".UpdaterReceiver" android:exported="false">
<intent-filter> <intent-filter>

View File

@@ -20,6 +20,7 @@ import android.app.NotificationManager;
import android.app.Service; import android.app.Service;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ServiceInfo;
import android.net.Uri; import android.net.Uri;
import android.os.IBinder; import android.os.IBinder;
import android.os.SystemClock; import android.os.SystemClock;
@@ -156,7 +157,8 @@ public class ExportUpdateService extends Service {
} }
}; };
startForeground(NOTIFICATION_ID, notificationBuilder.build()); startForeground(NOTIFICATION_ID, notificationBuilder.build(),
ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build()); notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
Runnable runnableComplete = () -> { Runnable runnableComplete = () -> {

View File

@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.ServiceInfo;
import android.os.Binder; import android.os.Binder;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
@@ -275,7 +276,8 @@ public class UpdaterService extends Service {
mNotificationBuilder.setTicker(text); mNotificationBuilder.setTicker(text);
mNotificationBuilder.setOngoing(true); mNotificationBuilder.setOngoing(true);
mNotificationBuilder.setAutoCancel(false); mNotificationBuilder.setAutoCancel(false);
startForeground(NOTIFICATION_ID, mNotificationBuilder.build()); startForeground(NOTIFICATION_ID, mNotificationBuilder.build(),
ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build()); mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build());
break; break;
} }
@@ -390,7 +392,8 @@ public class UpdaterService extends Service {
mNotificationBuilder.setTicker(text); mNotificationBuilder.setTicker(text);
mNotificationBuilder.setOngoing(true); mNotificationBuilder.setOngoing(true);
mNotificationBuilder.setAutoCancel(false); mNotificationBuilder.setAutoCancel(false);
startForeground(NOTIFICATION_ID, mNotificationBuilder.build()); startForeground(NOTIFICATION_ID, mNotificationBuilder.build(),
ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build()); mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build());
break; break;
} }