AppInstaller: Relocate installer-related methods to InstallerBase
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -20,26 +20,21 @@
|
||||
|
||||
package com.aurora.store.data.installer
|
||||
|
||||
import android.app.NotificationManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageInstaller
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.content.pm.PackageInfoCompat
|
||||
import com.aurora.extensions.getUpdateOwnerPackageNameCompat
|
||||
import com.aurora.extensions.isOAndAbove
|
||||
import com.aurora.extensions.isPAndAbove
|
||||
import com.aurora.extensions.isSAndAbove
|
||||
import com.aurora.store.BuildConfig
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.installer.base.IInstaller
|
||||
import com.aurora.store.data.model.Installer
|
||||
import com.aurora.store.data.model.InstallerInfo
|
||||
import com.aurora.store.util.NotificationUtil
|
||||
import com.aurora.store.util.PackageUtil
|
||||
import com.aurora.store.util.Preferences
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID
|
||||
@@ -128,24 +123,6 @@ class AppInstaller @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun notifyInstallation(context: Context, displayName: String, packageName: String) {
|
||||
val notificationManager = context.getSystemService<NotificationManager>()
|
||||
val notification = NotificationUtil.getInstallNotification(context, displayName, packageName)
|
||||
notificationManager!!.notify(packageName.hashCode(), notification)
|
||||
}
|
||||
|
||||
fun getErrorString(context: Context, status: Int): String {
|
||||
return when (status) {
|
||||
PackageInstaller.STATUS_FAILURE_ABORTED -> context.getString(R.string.installer_status_user_action)
|
||||
PackageInstaller.STATUS_FAILURE_BLOCKED -> context.getString(R.string.installer_status_failure_blocked)
|
||||
PackageInstaller.STATUS_FAILURE_CONFLICT -> context.getString(R.string.installer_status_failure_conflict)
|
||||
PackageInstaller.STATUS_FAILURE_INCOMPATIBLE -> context.getString(R.string.installer_status_failure_incompatible)
|
||||
PackageInstaller.STATUS_FAILURE_INVALID -> context.getString(R.string.installer_status_failure_invalid)
|
||||
PackageInstaller.STATUS_FAILURE_STORAGE -> context.getString(R.string.installer_status_failure_storage)
|
||||
else -> context.getString(R.string.installer_status_failure)
|
||||
}
|
||||
}
|
||||
|
||||
fun hasRootAccess(): Boolean {
|
||||
return Shell.getShell().isRoot
|
||||
}
|
||||
|
||||
@@ -234,14 +234,7 @@ class ServiceInstaller @Inject constructor(
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
val error = AppInstaller.getErrorString(
|
||||
context,
|
||||
returnCode
|
||||
)
|
||||
|
||||
postError(packageName, error, extra)
|
||||
}
|
||||
else -> postError(packageName, getErrorString(context, returnCode), extra)
|
||||
}
|
||||
if (::serviceConnection.isInitialized) {
|
||||
context.unbindService(serviceConnection)
|
||||
@@ -266,14 +259,7 @@ class ServiceInstaller @Inject constructor(
|
||||
if (packageName == download?.packageName) onInstallationSuccess()
|
||||
}
|
||||
|
||||
else -> {
|
||||
val error = AppInstaller.getErrorString(
|
||||
context,
|
||||
returnCode
|
||||
)
|
||||
|
||||
postError(packageName, error, extra)
|
||||
}
|
||||
else -> postError(packageName, getErrorString(context, returnCode), extra)
|
||||
}
|
||||
if (::serviceConnection.isInitialized) {
|
||||
context.unbindService(serviceConnection)
|
||||
|
||||
@@ -19,15 +19,20 @@
|
||||
|
||||
package com.aurora.store.data.installer.base
|
||||
|
||||
import android.app.NotificationManager
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageInstaller
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.content.getSystemService
|
||||
import com.aurora.store.AuroraApp
|
||||
import com.aurora.store.BuildConfig
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.event.InstallerEvent
|
||||
import com.aurora.store.data.installer.AppInstaller
|
||||
import com.aurora.store.data.room.download.Download
|
||||
import com.aurora.store.util.NotificationUtil
|
||||
import com.aurora.store.util.PathUtil
|
||||
import com.aurora.store.util.Preferences
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_AUTO_DELETE
|
||||
@@ -35,6 +40,26 @@ import java.io.File
|
||||
|
||||
abstract class InstallerBase(private val context: Context) : IInstaller {
|
||||
|
||||
companion object {
|
||||
fun notifyInstallation(context: Context, displayName: String, packageName: String) {
|
||||
val notificationManager = context.getSystemService<NotificationManager>()
|
||||
val notification = NotificationUtil.getInstallNotification(context, displayName, packageName)
|
||||
notificationManager!!.notify(packageName.hashCode(), notification)
|
||||
}
|
||||
|
||||
fun getErrorString(context: Context, status: Int): String {
|
||||
return when (status) {
|
||||
PackageInstaller.STATUS_FAILURE_ABORTED -> context.getString(R.string.installer_status_user_action)
|
||||
PackageInstaller.STATUS_FAILURE_BLOCKED -> context.getString(R.string.installer_status_failure_blocked)
|
||||
PackageInstaller.STATUS_FAILURE_CONFLICT -> context.getString(R.string.installer_status_failure_conflict)
|
||||
PackageInstaller.STATUS_FAILURE_INCOMPATIBLE -> context.getString(R.string.installer_status_failure_incompatible)
|
||||
PackageInstaller.STATUS_FAILURE_INVALID -> context.getString(R.string.installer_status_failure_invalid)
|
||||
PackageInstaller.STATUS_FAILURE_STORAGE -> context.getString(R.string.installer_status_failure_storage)
|
||||
else -> context.getString(R.string.installer_status_failure)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val TAG = InstallerBase::class.java.simpleName
|
||||
|
||||
var download: Download? = null
|
||||
@@ -58,7 +83,7 @@ abstract class InstallerBase(private val context: Context) : IInstaller {
|
||||
|
||||
fun onInstallationSuccess() {
|
||||
download?.let {
|
||||
AppInstaller.notifyInstallation(context, it.displayName, it.packageName)
|
||||
notifyInstallation(context, it.displayName, it.packageName)
|
||||
if (Preferences.getBoolean(context, PREFERENCE_AUTO_DELETE)) {
|
||||
PathUtil.getAppDownloadDir(context, it.packageName, it.versionCode)
|
||||
.deleteRecursively()
|
||||
|
||||
@@ -30,11 +30,11 @@ import com.aurora.extensions.runOnUiThread
|
||||
import com.aurora.store.AuroraApp
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.event.InstallerEvent
|
||||
import com.aurora.store.data.installer.AppInstaller
|
||||
import com.aurora.store.data.installer.AppInstaller.Companion.ACTION_INSTALL_STATUS
|
||||
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_DISPLAY_NAME
|
||||
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_PACKAGE_NAME
|
||||
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_VERSION_CODE
|
||||
import com.aurora.store.data.installer.base.InstallerBase
|
||||
import com.aurora.store.util.CommonUtil.inForeground
|
||||
import com.aurora.store.util.NotificationUtil
|
||||
import com.aurora.store.util.PackageUtil
|
||||
@@ -63,7 +63,7 @@ class InstallerStatusReceiver : BroadcastReceiver() {
|
||||
if (PackageUtil.isSharedLibrary(context, packageName)) return
|
||||
|
||||
AuroraApp.enqueuedInstalls.remove(packageName)
|
||||
AppInstaller.notifyInstallation(context, displayName, packageName)
|
||||
InstallerBase.notifyInstallation(context, displayName, packageName)
|
||||
if (Preferences.getBoolean(context, PREFERENCE_AUTO_DELETE)) {
|
||||
PathUtil.getAppDownloadDir(context, packageName, versionCode)
|
||||
.deleteRecursively()
|
||||
@@ -92,7 +92,7 @@ class InstallerStatusReceiver : BroadcastReceiver() {
|
||||
context,
|
||||
packageName,
|
||||
displayName,
|
||||
AppInstaller.getErrorString(context, status)
|
||||
InstallerBase.getErrorString(context, status)
|
||||
)
|
||||
notificationManager!!.notify(packageName.hashCode(), notification)
|
||||
}
|
||||
@@ -121,13 +121,13 @@ class InstallerStatusReceiver : BroadcastReceiver() {
|
||||
|
||||
PackageInstaller.STATUS_FAILURE_ABORTED -> {
|
||||
InstallerEvent.Cancelled(packageName!!).apply {
|
||||
this.extra = AppInstaller.getErrorString(context, status)
|
||||
this.extra = InstallerBase.getErrorString(context, status)
|
||||
}
|
||||
}
|
||||
|
||||
else -> {
|
||||
InstallerEvent.Failed(packageName!!).apply {
|
||||
this.error = AppInstaller.getErrorString(context, status)
|
||||
this.error = InstallerBase.getErrorString(context, status)
|
||||
this.extra = extra ?: ""
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user