diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 600d84b71..f7a741ad2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -157,6 +157,7 @@
+
diff --git a/app/src/main/aidl/com/aurora/services/IPrivilegedService.aidl b/app/src/main/aidl/com/aurora/services/IPrivilegedService.aidl
index ccb676e8e..40fb20d5a 100644
--- a/app/src/main/aidl/com/aurora/services/IPrivilegedService.aidl
+++ b/app/src/main/aidl/com/aurora/services/IPrivilegedService.aidl
@@ -22,6 +22,8 @@ interface IPrivilegedService {
boolean hasPrivilegedPermissions();
+ boolean isMoreMethodImplemented();
+
oneway void installPackage(
in Uri packageURI,
in int flags,
@@ -52,6 +54,15 @@ interface IPrivilegedService {
in IPrivilegedCallback callback
);
+ oneway void installSplitPackageMore(
+ in String packageName,
+ in List uriList,
+ in int flags,
+ in String installerPackageName,
+ in IPrivilegedCallback callback,
+ in List fileList
+ );
+
oneway void deletePackage(
in String packageName,
in int flags,
diff --git a/app/src/main/java/com/aurora/Constants.kt b/app/src/main/java/com/aurora/Constants.kt
index def97319c..0e8c24be2 100644
--- a/app/src/main/java/com/aurora/Constants.kt
+++ b/app/src/main/java/com/aurora/Constants.kt
@@ -37,6 +37,7 @@ object Constants {
const val NOTIFICATION_CHANNEL_ALERT = "NOTIFICATION_CHANNEL_ALERT"
const val NOTIFICATION_CHANNEL_GENERAL = "NOTIFICATION_CHANNEL_GENERAL"
+ const val NOTIFICATION_CHANNEL_UPDATER_SERVICE = "NOTIFICATION_CHANNEL_UPDATER_SERVICE"
const val URL_DISPENSER = "http://goolag.store:1337/api/auth"
diff --git a/app/src/main/java/com/aurora/store/data/downloader/DownloadManager.kt b/app/src/main/java/com/aurora/store/data/downloader/DownloadManager.kt
index fe08723f5..809b86351 100644
--- a/app/src/main/java/com/aurora/store/data/downloader/DownloadManager.kt
+++ b/app/src/main/java/com/aurora/store/data/downloader/DownloadManager.kt
@@ -77,7 +77,10 @@ class DownloadManager private constructor(var context: Context) {
if (packageList.contains(download.tag)) {
val packageName = download.tag
if (packageName != null) {
- fetch.deleteGroup(packageName.hashCode())
+ val groupIDsOfPackageName = RequestGroupIdBuilder.getGroupIDsForApp(context, packageName.hashCode())
+ groupIDsOfPackageName.forEach {
+ fetch.deleteGroup(it)
+ }
packageList.remove(packageName)
}
}
diff --git a/app/src/main/java/com/aurora/store/data/downloader/RequestBuilder.kt b/app/src/main/java/com/aurora/store/data/downloader/RequestBuilder.kt
index c21bdc866..30752d7ea 100644
--- a/app/src/main/java/com/aurora/store/data/downloader/RequestBuilder.kt
+++ b/app/src/main/java/com/aurora/store/data/downloader/RequestBuilder.kt
@@ -31,9 +31,9 @@ import com.tonyodev.fetch2.Request
import com.tonyodev.fetch2core.Extras
import java.lang.reflect.Modifier
-private inline fun Request.attachMetaData(app: App) {
+private inline fun Request.attachMetaData(context: Context, app: App) {
apply {
- groupId = app.id
+ groupId = app.getGroupId(context)
tag = app.packageName
enqueueAction = EnqueueAction.UPDATE_ACCORDINGLY
networkType = NetworkType.ALL
@@ -61,7 +61,7 @@ object RequestBuilder {
File.FileType.PATCH -> PathUtil.getObbDownloadFile(context, app, file)
}
return Request(file.url, fileName).apply {
- attachMetaData(app)
+ attachMetaData(context, app)
attachExtra(app)
}
}
diff --git a/app/src/main/java/com/aurora/store/data/downloader/RequestGroupIdBuilder.kt b/app/src/main/java/com/aurora/store/data/downloader/RequestGroupIdBuilder.kt
new file mode 100644
index 000000000..53f346c78
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/data/downloader/RequestGroupIdBuilder.kt
@@ -0,0 +1,55 @@
+package com.aurora.store.data.downloader
+
+import android.content.Context
+import com.aurora.gplayapi.data.models.App
+import com.aurora.store.util.Preferences
+import com.aurora.store.util.Preferences.PREFERENCE_UNIQUE_GROUP_IDS
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import org.apache.commons.lang3.RandomUtils
+
+class RequestGroupIdBuilder {
+
+ data class AppIDnVersion(val id: Int, val versionCode: Int)
+
+ companion object {
+ fun getGroupIDsForApp(context: Context, appID: Int): MutableList {
+ val data = Preferences.getPrefs(context).getString(PREFERENCE_UNIQUE_GROUP_IDS, "")!!
+ val gson = Gson()
+ var groupIDMap = HashMap()
+ if (data.isNotEmpty()) {
+ val empMapType = object : TypeToken