diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java index e866e57f7..6171d2e61 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java @@ -7,15 +7,17 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.Environment; -import android.widget.HeaderViewListAdapter; + +import com.vk.core.f.FileUtils; + +import java.io.File; import ru.vtosters.lite.ui.activities.APKInstallActivity; -import ru.vtosters.lite.ui.vkui.ModalBottomSheetWrapper; import ru.vtosters.lite.utils.Globals; public class OTADownloader { - private static BroadcastReceiver callback = new BroadcastReceiver() { + private static final BroadcastReceiver callback = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { var extras = intent.getExtras(); @@ -23,17 +25,28 @@ public class OTADownloader { || !intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) return; var query = new DownloadManager.Query(); - long id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID); + var id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID); query.setFilterById(id); var manager = (DownloadManager) Globals.getContext().getSystemService(Context.DOWNLOAD_SERVICE); var cursor = manager.query(query); if (cursor.moveToFirst()) { var status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); if (status == DownloadManager.STATUS_SUCCESSFUL) { - var uri = Uri.parse(cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_URI))); - APKInstallActivity.installOta(Globals.getContext(), uri); + var downloadDir = new File(Environment.getExternalStorageDirectory(), "Download"); + if (!downloadDir.exists()) return; + var list = downloadDir.listFiles(); + if (list == null || list.length == 0) return; + var maxIndex = -1; + for (File file : list) { + var name = file.getAbsolutePath().substring(file.getAbsolutePath().lastIndexOf("/") + 1); + if (file.isFile() + && name.matches("VTLite-\\d+\\.apk")) + maxIndex = Math.max(maxIndex, Integer.parseInt(name.replaceFirst(".+-(\\d+).+", "$1"))); + } + File apk = maxIndex == -1 ? new File(downloadDir, "VTLite.apk") : new File(downloadDir, "VTLite-" + maxIndex + ".apk"); + APKInstallActivity.installOta(context, FileUtils.h(apk)); } else if (status == DownloadManager.STATUS_FAILED) { - + // do something } } } @@ -41,6 +54,7 @@ public class OTADownloader { public static void downloadBuild(String url) { var context = Globals.getContext(); + url = "https://github.com/vtosters/lite/releases/download/v0.2.9-beta2/VTLite.apk"; var uri = Uri.parse(url); context.registerReceiver(callback, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java index 1d3c568c3..75f4b51f2 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java @@ -1,14 +1,10 @@ package ru.vtosters.lite.ui.dialogs; import android.app.Activity; -import android.text.Html; import android.widget.Toast; -import com.vk.core.dialogs.VKProgressDialog; - import ru.vtosters.lite.downloaders.OTADownloader; import ru.vtosters.lite.ui.vkui.ModalBottomSheetWrapper; -import ru.vtosters.lite.utils.Globals; import ru.vtosters.lite.utils.OTAHelper; public class OTADialog implements OTAHelper.OTAListener {