mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
custom downloader + typo
This commit is contained in:
parent
3f134dc0b2
commit
f6067528e1
2 changed files with 86 additions and 58 deletions
|
@ -8,9 +8,9 @@ plugins {
|
|||
|
||||
def tmpFilePath = System.getProperty("user.home") + "/work/_temp/keystore/"
|
||||
def allFilesFromDir = new File(tmpFilePath).listFiles()
|
||||
def prerelaseStoreFile = null
|
||||
def prereleaseStoreFile = null
|
||||
if (allFilesFromDir != null) {
|
||||
prerelaseStoreFile = allFilesFromDir.first()
|
||||
prereleaseStoreFile = allFilesFromDir.first()
|
||||
}
|
||||
|
||||
android {
|
||||
|
@ -19,8 +19,8 @@ android {
|
|||
}
|
||||
signingConfigs {
|
||||
prerelease {
|
||||
if (prerelaseStoreFile != null) {
|
||||
storeFile = file(prerelaseStoreFile)
|
||||
if (prereleaseStoreFile != null) {
|
||||
storeFile = file(prereleaseStoreFile)
|
||||
storePassword System.getenv("SIGNING_STORE_PASSWORD")
|
||||
keyAlias System.getenv("SIGNING_KEY_ALIAS")
|
||||
keyPassword System.getenv("SIGNING_KEY_PASSWORD")
|
||||
|
|
|
@ -1,18 +1,13 @@
|
|||
package com.lagradost.cloudstream3.utils
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.DownloadManager
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.net.Uri
|
||||
import android.os.Environment
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import com.lagradost.cloudstream3.BuildConfig
|
||||
|
@ -23,9 +18,16 @@ import com.lagradost.cloudstream3.mvvm.logError
|
|||
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import okhttp3.*
|
||||
import okio.BufferedSink
|
||||
import okio.Okio
|
||||
import okio.buffer
|
||||
import okio.sink
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import kotlin.concurrent.thread
|
||||
|
||||
|
||||
class InAppUpdater {
|
||||
companion object {
|
||||
const val GITHUB_USER_NAME = "recloudstream"
|
||||
|
@ -191,65 +193,91 @@ class InAppUpdater {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private fun Activity.downloadUpdate(url: String): Boolean {
|
||||
Log.d(LOG_TAG, "Downloading update: ${url}")
|
||||
|
||||
val downloadManager = getSystemService<DownloadManager>()!!
|
||||
|
||||
val request = DownloadManager.Request(Uri.parse(url))
|
||||
.setMimeType("application/vnd.android.package-archive")
|
||||
.setTitle("CloudStream Update")
|
||||
.setDestinationInExternalPublicDir(
|
||||
Environment.DIRECTORY_DOWNLOADS,
|
||||
"CloudStream.apk"
|
||||
)
|
||||
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
|
||||
.setAllowedOverRoaming(true)
|
||||
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
|
||||
Log.d(LOG_TAG, "Downloading update: $url")
|
||||
|
||||
val client = OkHttpClient()
|
||||
val localContext = this
|
||||
val request = Request.Builder()
|
||||
.url(url)
|
||||
.build()
|
||||
|
||||
val id = try {
|
||||
downloadManager.enqueue(request)
|
||||
} catch (e: Exception) {
|
||||
logError(e)
|
||||
showToast(this, R.string.storage_error, Toast.LENGTH_SHORT)
|
||||
-1
|
||||
}
|
||||
if (id == -1L) return true
|
||||
registerReceiver(
|
||||
object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context?, intent: Intent?) {
|
||||
try {
|
||||
val downloadId = intent?.getLongExtra(
|
||||
DownloadManager.EXTRA_DOWNLOAD_ID, id
|
||||
) ?: id
|
||||
client.newCall(request).enqueue(object : Callback {
|
||||
|
||||
val query = DownloadManager.Query()
|
||||
query.setFilterById(downloadId)
|
||||
val c = downloadManager.query(query)
|
||||
override fun onFailure(call: Call, e: okio.IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
if (c.moveToFirst()) {
|
||||
val columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS)
|
||||
if (DownloadManager.STATUS_SUCCESSFUL == c
|
||||
.getInt(columnIndex)
|
||||
) {
|
||||
c.getColumnIndex(DownloadManager.COLUMN_MEDIAPROVIDER_URI)
|
||||
val uri = Uri.parse(
|
||||
c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))
|
||||
)
|
||||
openApk(localContext, uri)
|
||||
override fun onResponse(call: Call, response: Response) {
|
||||
val downloadedFile = File(localContext.cacheDir, "CloudStream.apk")
|
||||
val sink: BufferedSink = downloadedFile.sink().buffer()
|
||||
sink.writeAll(response.body.source())
|
||||
sink.close()
|
||||
openApk(localContext, Uri.fromFile(downloadedFile))
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
logError(e)
|
||||
}
|
||||
}
|
||||
}, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)
|
||||
)
|
||||
})
|
||||
return true
|
||||
}
|
||||
|
||||
// Log.d(LOG_TAG, "Downloading update: ${url}")
|
||||
//
|
||||
// val downloadManager = getSystemService<DownloadManager>()!!
|
||||
//
|
||||
// val request = DownloadManager.Request(Uri.parse(url))
|
||||
// .setMimeType("application/vnd.android.package-archive")
|
||||
// .setTitle("CloudStream Update")
|
||||
// .setDestinationInExternalPublicDir(
|
||||
// Environment.DIRECTORY_DOWNLOADS,
|
||||
// "CloudStream.apk"
|
||||
// )
|
||||
// .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
|
||||
// .setAllowedOverRoaming(true)
|
||||
// .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
|
||||
//
|
||||
// val localContext = this
|
||||
//
|
||||
// val id = try {
|
||||
// downloadManager.enqueue(request)
|
||||
// } catch (e: Exception) {
|
||||
// logError(e)
|
||||
// showToast(this, R.string.storage_error, Toast.LENGTH_SHORT)
|
||||
// -1
|
||||
// }
|
||||
// if (id == -1L) return true
|
||||
// registerReceiver(
|
||||
// object : BroadcastReceiver() {
|
||||
// override fun onReceive(context: Context?, intent: Intent?) {
|
||||
// try {
|
||||
// val downloadId = intent?.getLongExtra(
|
||||
// DownloadManager.EXTRA_DOWNLOAD_ID, id
|
||||
// ) ?: id
|
||||
//
|
||||
// val query = DownloadManager.Query()
|
||||
// query.setFilterById(downloadId)
|
||||
// val c = downloadManager.query(query)
|
||||
//
|
||||
// if (c.moveToFirst()) {
|
||||
// val columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS)
|
||||
// if (DownloadManager.STATUS_SUCCESSFUL == c
|
||||
// .getInt(columnIndex)
|
||||
// ) {
|
||||
// c.getColumnIndex(DownloadManager.COLUMN_MEDIAPROVIDER_URI)
|
||||
// val uri = Uri.parse(
|
||||
// c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))
|
||||
// )
|
||||
// openApk(localContext, uri)
|
||||
// }
|
||||
// }
|
||||
// } catch (e: Exception) {
|
||||
// logError(e)
|
||||
// }
|
||||
// }
|
||||
// }, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)
|
||||
// )
|
||||
|
||||
fun openApk(context: Context, uri: Uri) {
|
||||
try {
|
||||
uri.path?.let {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue