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
|
package com.aurora.store.data.installer
|
||||||
|
|
||||||
import android.app.NotificationManager
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageInstaller
|
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.core.content.getSystemService
|
|
||||||
import androidx.core.content.pm.PackageInfoCompat
|
import androidx.core.content.pm.PackageInfoCompat
|
||||||
import com.aurora.extensions.getUpdateOwnerPackageNameCompat
|
import com.aurora.extensions.getUpdateOwnerPackageNameCompat
|
||||||
import com.aurora.extensions.isOAndAbove
|
import com.aurora.extensions.isOAndAbove
|
||||||
import com.aurora.extensions.isPAndAbove
|
import com.aurora.extensions.isPAndAbove
|
||||||
import com.aurora.extensions.isSAndAbove
|
import com.aurora.extensions.isSAndAbove
|
||||||
import com.aurora.store.BuildConfig
|
import com.aurora.store.BuildConfig
|
||||||
import com.aurora.store.R
|
|
||||||
import com.aurora.store.data.installer.base.IInstaller
|
import com.aurora.store.data.installer.base.IInstaller
|
||||||
import com.aurora.store.data.model.Installer
|
import com.aurora.store.data.model.Installer
|
||||||
import com.aurora.store.data.model.InstallerInfo
|
import com.aurora.store.data.model.InstallerInfo
|
||||||
import com.aurora.store.util.NotificationUtil
|
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID
|
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 {
|
fun hasRootAccess(): Boolean {
|
||||||
return Shell.getShell().isRoot
|
return Shell.getShell().isRoot
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,14 +234,7 @@ class ServiceInstaller @Inject constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> postError(packageName, getErrorString(context, returnCode), extra)
|
||||||
val error = AppInstaller.getErrorString(
|
|
||||||
context,
|
|
||||||
returnCode
|
|
||||||
)
|
|
||||||
|
|
||||||
postError(packageName, error, extra)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (::serviceConnection.isInitialized) {
|
if (::serviceConnection.isInitialized) {
|
||||||
context.unbindService(serviceConnection)
|
context.unbindService(serviceConnection)
|
||||||
@@ -266,14 +259,7 @@ class ServiceInstaller @Inject constructor(
|
|||||||
if (packageName == download?.packageName) onInstallationSuccess()
|
if (packageName == download?.packageName) onInstallationSuccess()
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> postError(packageName, getErrorString(context, returnCode), extra)
|
||||||
val error = AppInstaller.getErrorString(
|
|
||||||
context,
|
|
||||||
returnCode
|
|
||||||
)
|
|
||||||
|
|
||||||
postError(packageName, error, extra)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (::serviceConnection.isInitialized) {
|
if (::serviceConnection.isInitialized) {
|
||||||
context.unbindService(serviceConnection)
|
context.unbindService(serviceConnection)
|
||||||
|
|||||||
@@ -19,15 +19,20 @@
|
|||||||
|
|
||||||
package com.aurora.store.data.installer.base
|
package com.aurora.store.data.installer.base
|
||||||
|
|
||||||
|
import android.app.NotificationManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageInstaller
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
|
import androidx.core.content.getSystemService
|
||||||
import com.aurora.store.AuroraApp
|
import com.aurora.store.AuroraApp
|
||||||
import com.aurora.store.BuildConfig
|
import com.aurora.store.BuildConfig
|
||||||
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.event.InstallerEvent
|
import com.aurora.store.data.event.InstallerEvent
|
||||||
import com.aurora.store.data.installer.AppInstaller
|
import com.aurora.store.data.installer.AppInstaller
|
||||||
import com.aurora.store.data.room.download.Download
|
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.PathUtil
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.util.Preferences.PREFERENCE_AUTO_DELETE
|
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 {
|
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
|
private val TAG = InstallerBase::class.java.simpleName
|
||||||
|
|
||||||
var download: Download? = null
|
var download: Download? = null
|
||||||
@@ -58,7 +83,7 @@ abstract class InstallerBase(private val context: Context) : IInstaller {
|
|||||||
|
|
||||||
fun onInstallationSuccess() {
|
fun onInstallationSuccess() {
|
||||||
download?.let {
|
download?.let {
|
||||||
AppInstaller.notifyInstallation(context, it.displayName, it.packageName)
|
notifyInstallation(context, it.displayName, it.packageName)
|
||||||
if (Preferences.getBoolean(context, PREFERENCE_AUTO_DELETE)) {
|
if (Preferences.getBoolean(context, PREFERENCE_AUTO_DELETE)) {
|
||||||
PathUtil.getAppDownloadDir(context, it.packageName, it.versionCode)
|
PathUtil.getAppDownloadDir(context, it.packageName, it.versionCode)
|
||||||
.deleteRecursively()
|
.deleteRecursively()
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ import com.aurora.extensions.runOnUiThread
|
|||||||
import com.aurora.store.AuroraApp
|
import com.aurora.store.AuroraApp
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.event.InstallerEvent
|
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.ACTION_INSTALL_STATUS
|
||||||
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_DISPLAY_NAME
|
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_PACKAGE_NAME
|
||||||
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_VERSION_CODE
|
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.CommonUtil.inForeground
|
||||||
import com.aurora.store.util.NotificationUtil
|
import com.aurora.store.util.NotificationUtil
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
@@ -63,7 +63,7 @@ class InstallerStatusReceiver : BroadcastReceiver() {
|
|||||||
if (PackageUtil.isSharedLibrary(context, packageName)) return
|
if (PackageUtil.isSharedLibrary(context, packageName)) return
|
||||||
|
|
||||||
AuroraApp.enqueuedInstalls.remove(packageName)
|
AuroraApp.enqueuedInstalls.remove(packageName)
|
||||||
AppInstaller.notifyInstallation(context, displayName, packageName)
|
InstallerBase.notifyInstallation(context, displayName, packageName)
|
||||||
if (Preferences.getBoolean(context, PREFERENCE_AUTO_DELETE)) {
|
if (Preferences.getBoolean(context, PREFERENCE_AUTO_DELETE)) {
|
||||||
PathUtil.getAppDownloadDir(context, packageName, versionCode)
|
PathUtil.getAppDownloadDir(context, packageName, versionCode)
|
||||||
.deleteRecursively()
|
.deleteRecursively()
|
||||||
@@ -92,7 +92,7 @@ class InstallerStatusReceiver : BroadcastReceiver() {
|
|||||||
context,
|
context,
|
||||||
packageName,
|
packageName,
|
||||||
displayName,
|
displayName,
|
||||||
AppInstaller.getErrorString(context, status)
|
InstallerBase.getErrorString(context, status)
|
||||||
)
|
)
|
||||||
notificationManager!!.notify(packageName.hashCode(), notification)
|
notificationManager!!.notify(packageName.hashCode(), notification)
|
||||||
}
|
}
|
||||||
@@ -121,13 +121,13 @@ class InstallerStatusReceiver : BroadcastReceiver() {
|
|||||||
|
|
||||||
PackageInstaller.STATUS_FAILURE_ABORTED -> {
|
PackageInstaller.STATUS_FAILURE_ABORTED -> {
|
||||||
InstallerEvent.Cancelled(packageName!!).apply {
|
InstallerEvent.Cancelled(packageName!!).apply {
|
||||||
this.extra = AppInstaller.getErrorString(context, status)
|
this.extra = InstallerBase.getErrorString(context, status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
InstallerEvent.Failed(packageName!!).apply {
|
InstallerEvent.Failed(packageName!!).apply {
|
||||||
this.error = AppInstaller.getErrorString(context, status)
|
this.error = InstallerBase.getErrorString(context, status)
|
||||||
this.extra = extra ?: ""
|
this.extra = extra ?: ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user