mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Improve: Root Installer will Install in background
This commit is contained in:
parent
c842b4574a
commit
0fd8e3b8b7
@ -14,11 +14,12 @@ import com.looker.droidify.Common
|
|||||||
import com.looker.droidify.MainActivity
|
import com.looker.droidify.MainActivity
|
||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
import com.looker.droidify.content.Cache
|
import com.looker.droidify.content.Cache
|
||||||
import com.looker.droidify.content.Preferences
|
|
||||||
import com.looker.droidify.entity.Release
|
import com.looker.droidify.entity.Release
|
||||||
import com.looker.droidify.entity.Repository
|
import com.looker.droidify.entity.Repository
|
||||||
|
import com.looker.droidify.installer.AppInstaller
|
||||||
import com.looker.droidify.network.Downloader
|
import com.looker.droidify.network.Downloader
|
||||||
import com.looker.droidify.utility.Utils
|
import com.looker.droidify.utility.Utils
|
||||||
|
import com.looker.droidify.utility.Utils.rootInstallerEnabled
|
||||||
import com.looker.droidify.utility.extension.android.*
|
import com.looker.droidify.utility.extension.android.*
|
||||||
import com.looker.droidify.utility.extension.resources.*
|
import com.looker.droidify.utility.extension.resources.*
|
||||||
import com.looker.droidify.utility.extension.text.*
|
import com.looker.droidify.utility.extension.text.*
|
||||||
@ -26,6 +27,8 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|||||||
import io.reactivex.rxjava3.core.Observable
|
import io.reactivex.rxjava3.core.Observable
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.subjects.PublishSubject
|
import io.reactivex.rxjava3.subjects.PublishSubject
|
||||||
|
import kotlinx.coroutines.MainScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
@ -279,48 +282,37 @@ class DownloadService : ConnectionService<DownloadService.Binder>() {
|
|||||||
.Builder(this, Common.NOTIFICATION_CHANNEL_DOWNLOADING)
|
.Builder(this, Common.NOTIFICATION_CHANNEL_DOWNLOADING)
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.setSmallIcon(android.R.drawable.stat_sys_download_done)
|
.setSmallIcon(android.R.drawable.stat_sys_download_done)
|
||||||
.setColor(
|
.setColor(getColorFromAttr(android.R.attr.colorAccent).defaultColor)
|
||||||
ContextThemeWrapper(this, R.style.Theme_Main_Light)
|
.setContentIntent(installIntent(task))
|
||||||
.getColorFromAttr(android.R.attr.colorAccent).defaultColor
|
|
||||||
)
|
|
||||||
.setContentIntent(
|
|
||||||
PendingIntent.getBroadcast(
|
|
||||||
this,
|
|
||||||
0,
|
|
||||||
Intent(this, Receiver::class.java)
|
|
||||||
.setAction("$ACTION_INSTALL.${task.packageName}")
|
|
||||||
.putExtra(EXTRA_CACHE_FILE_NAME, task.release.cacheFileName),
|
|
||||||
if (Android.sdk(23))
|
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
|
||||||
else
|
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.setContentTitle(getString(R.string.downloaded_FORMAT, task.name))
|
.setContentTitle(getString(R.string.downloaded_FORMAT, task.name))
|
||||||
.setContentText(getString(R.string.tap_to_install_DESC))
|
.setContentText(getString(R.string.tap_to_install_DESC))
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun installIntent(task: Task): PendingIntent = PendingIntent.getBroadcast(
|
||||||
|
this,
|
||||||
|
0,
|
||||||
|
Intent(this, Receiver::class.java)
|
||||||
|
.setAction("$ACTION_INSTALL.${task.packageName}")
|
||||||
|
.putExtra(EXTRA_CACHE_FILE_NAME, task.release.cacheFileName),
|
||||||
|
if (Android.sdk(23)) PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
||||||
|
else PendingIntent.FLAG_UPDATE_CURRENT
|
||||||
|
)
|
||||||
|
|
||||||
private fun publishSuccess(task: Task) {
|
private fun publishSuccess(task: Task) {
|
||||||
var consumed = false
|
var consumed = false
|
||||||
stateSubject.onNext(State.Success(task.packageName, task.name, task.release) {
|
stateSubject.onNext(State.Success(task.packageName, task.name, task.release) {
|
||||||
consumed = true
|
consumed = true
|
||||||
})
|
})
|
||||||
if (consumed || (Preferences[Preferences.Key.RootPermission])) {
|
if (!consumed) {
|
||||||
PendingIntent.getBroadcast(
|
if (rootInstallerEnabled) {
|
||||||
this,
|
MainScope().launch {
|
||||||
0,
|
AppInstaller.getInstance(this@DownloadService)
|
||||||
Intent(this, Receiver::class.java)
|
?.defaultInstaller?.install(task.release.cacheFileName)
|
||||||
.setAction("$ACTION_INSTALL.${task.packageName}")
|
}
|
||||||
.putExtra(EXTRA_CACHE_FILE_NAME, task.release.cacheFileName),
|
} else showNotificationInstall(task)
|
||||||
if (Android.sdk(23))
|
}
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
|
||||||
else
|
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT
|
|
||||||
)
|
|
||||||
.send()
|
|
||||||
} else showNotificationInstall(task)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun validatePackage(task: Task, file: File): ValidationError? {
|
private fun validatePackage(task: Task, file: File): ValidationError? {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user