diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 684179a22..1303c9ae6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -162,7 +162,15 @@
android:resource="@xml/paths" />
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/aurora/store/data/installer/InstallerBase.kt b/app/src/main/java/com/aurora/store/data/installer/InstallerBase.kt
index f08c24a99..6e83559ee 100644
--- a/app/src/main/java/com/aurora/store/data/installer/InstallerBase.kt
+++ b/app/src/main/java/com/aurora/store/data/installer/InstallerBase.kt
@@ -26,6 +26,9 @@ import android.os.Build
import androidx.core.content.FileProvider
import com.aurora.store.AuroraApplication
import com.aurora.store.BuildConfig
+import com.aurora.store.data.event.InstallerEvent
+import com.aurora.store.util.Log
+import org.greenrobot.eventbus.EventBus
import java.io.File
abstract class InstallerBase(protected var context: Context) : IInstaller {
@@ -59,6 +62,18 @@ abstract class InstallerBase(protected var context: Context) : IInstaller {
context.startActivity(intent)
}
+ open fun postError(packageName: String, error: String?, extra: String?) {
+ Log.e("Service Error :$error")
+
+ val event = InstallerEvent.Failed(
+ packageName,
+ error,
+ extra
+ )
+
+ EventBus.getDefault().post(event)
+ }
+
open fun getUri(file: File): Uri {
return FileProvider.getUriForFile(
context,
diff --git a/app/src/main/java/com/aurora/store/data/installer/InstallerService.kt b/app/src/main/java/com/aurora/store/data/installer/InstallerService.kt
index 8b5e42783..dfcc52ce7 100644
--- a/app/src/main/java/com/aurora/store/data/installer/InstallerService.kt
+++ b/app/src/main/java/com/aurora/store/data/installer/InstallerService.kt
@@ -35,7 +35,7 @@ class InstallerService : Service() {
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -69)
val packageName = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME)
- val extra = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
+ val extra = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE)
when (status) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> promptUser(intent)
diff --git a/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt
index ac0dd736d..c5092de94 100644
--- a/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt
+++ b/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt
@@ -71,12 +71,11 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
xInstall(packageName, uriList)
}
else -> {
- val event = InstallerEvent.Failed(
+ postError(
packageName,
context.getString(R.string.installer_status_failure),
context.getString(R.string.installer_service_unavailable)
)
- EventBus.getDefault().post(event)
}
}
}
@@ -100,7 +99,8 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
returnCode: Int,
extra: String?
) {
-
+ removeFromInstallQueue(packageName)
+ handleCallback(packageName, returnCode, extra)
}
}
@@ -114,15 +114,12 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
} catch (e: RemoteException) {
Log.e("Failed to connect Aurora Services")
}
-
} else {
- Log.e(context.getString(R.string.installer_service_misconfigured))
- val event = InstallerEvent.Failed(
+ postError(
packageName,
context.getString(R.string.installer_status_failure),
context.getString(R.string.installer_service_misconfigured)
)
- EventBus.getDefault().post(event)
}
}
@@ -150,11 +147,11 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
if (service.hasPrivilegedPermissions()) {
Log.i(context.getString(R.string.installer_service_available))
+
val callback = object : IPrivilegedCallback.Stub() {
override fun handleResult(packageName: String, returnCode: Int) {
- Log.e("$packageName : $returnCode")
- removeFromInstallQueue(packageName)
+
}
override fun handleResultX(
@@ -162,27 +159,8 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
returnCode: Int,
extra: String?
) {
- when (returnCode) {
- PackageInstaller.STATUS_SUCCESS -> {
- EventBus.getDefault()
- .post(InstallerEvent.Success(packageName, "Success"))
- }
- else -> {
- val errorString = AppInstaller.getErrorString(
- context,
- returnCode
- )
-
- val event = InstallerEvent.Failed(
- packageName,
- errorString,
- extra
- )
-
- Log.e("$packageName : $errorString")
- EventBus.getDefault().post(event)
- }
- }
+ removeFromInstallQueue(packageName)
+ handleCallback(packageName, returnCode, extra)
}
}
@@ -196,22 +174,14 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
)
} catch (e: RemoteException) {
removeFromInstallQueue(packageName)
- val event = InstallerEvent.Failed(
- packageName,
- e.localizedMessage,
- e.stackTraceToString()
- )
- EventBus.getDefault().post(event)
- Log.e("Failed to connect Aurora Services")
+ postError(packageName, e.localizedMessage, e.stackTraceToString())
}
} else {
- Log.e(context.getString(R.string.installer_service_misconfigured))
- val event = InstallerEvent.Failed(
+ postError(
packageName,
context.getString(R.string.installer_status_failure),
context.getString(R.string.installer_service_misconfigured)
)
- EventBus.getDefault().post(event)
}
}
@@ -231,6 +201,24 @@ class ServiceInstaller(context: Context) : InstallerBase(context) {
)
}
+ private fun handleCallback(packageName: String, returnCode: Int, extra: String?) {
+ Log.i("Services Callback : $packageName $returnCode $extra")
+
+ when (returnCode) {
+ PackageInstaller.STATUS_SUCCESS -> {
+ EventBus.getDefault().post(InstallerEvent.Success(packageName, "Success"))
+ }
+ else -> {
+ val error = AppInstaller.getErrorString(
+ context,
+ returnCode
+ )
+
+ postError(packageName, error, extra)
+ }
+ }
+ }
+
override fun getUri(file: File): Uri {
val uri = FileProvider.getUriForFile(
context,
diff --git a/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt
index f5883dfed..c4fc4a857 100644
--- a/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt
+++ b/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt
@@ -29,10 +29,8 @@ import androidx.annotation.RequiresApi
import androidx.core.content.FileProvider
import com.aurora.extensions.isNAndAbove
import com.aurora.store.BuildConfig
-import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.util.Log
import org.apache.commons.io.IOUtils
-import org.greenrobot.eventbus.EventBus
import java.io.File
class SessionInstaller(context: Context) : InstallerBase(context) {
@@ -102,13 +100,12 @@ class SessionInstaller(context: Context) : InstallerBase(context) {
} catch (e: Exception) {
session.abandon()
removeFromInstallQueue(packageName)
- val event = InstallerEvent.Failed(
+
+ postError(
packageName,
e.localizedMessage,
e.stackTraceToString()
)
- EventBus.getDefault().post(event)
- Log.e("Failed to install $packageName : %s", e.message)
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8225d3040..cf2b80d7f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -216,7 +216,7 @@
"Aurora services is available and ready to install."
"Aurora services is either not installed or version is incorrect (required >= 1.0.9), kindly install it or change installer"
"Aurora services not configured. Make sure service is enabled & all permissions are granted"
- "Installation failed"
+ "Installer failed"
"Installation cancelled"
"Installation was blocked"
"Could not create session"