From fd42c90254340bcf2a66bd5cdb0986656b02ea61 Mon Sep 17 00:00:00 2001 From: Adam Bednarz Date: Mon, 13 Sep 2021 00:20:18 +0200 Subject: [PATCH] automatic download close #34 --- app/build.gradle | 2 +- app/release/output-metadata.json | 18 +++++ app/src/main/AndroidManifest.xml | 1 + .../towerofflamingblames/MainActivity.java | 71 +++++++++++++------ 4 files changed, 69 insertions(+), 23 deletions(-) create mode 100644 app/release/output-metadata.json diff --git a/app/build.gradle b/app/build.gradle index 69bf25e..fb3d565 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,7 +12,7 @@ android { minSdkVersion 26 targetSdkVersion 30 versionCode 1 - versionName "0.8.3" + versionName "0.8.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json new file mode 100644 index 0000000..4a01d19 --- /dev/null +++ b/app/release/output-metadata.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.example.towerofflamingblames", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "versionCode": 1, + "versionName": "0.8.3.5", + "outputFile": "app-release.apk" + } + ] +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4848b0c..4ec152d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + { - Intent launchBrowser = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - startActivity(launchBrowser); - }) + .setPositiveButton("Update", (dialog, which) -> downloadUpdate(url)) .setNegativeButton("Cancel", (dialog, which) -> {}) .show(); newUpdateDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.RED); } + + private void downloadUpdate(String url) { + DownloadManager.Request request = new DownloadManager + .Request(Uri.parse(url + "/download/TowerOfFlamingBlames.apk")); + final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); + final long downloadId = manager.enqueue(request); + + BroadcastReceiver onComplete = new BroadcastReceiver() { + public void onReceive(Context ctxt, Intent intent) { + Intent install = new Intent(Intent.ACTION_INSTALL_PACKAGE); + install.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + install.setDataAndType( + manager.getUriForDownloadedFile(downloadId), + manager.getMimeTypeForDownloadedFile(downloadId) + ); + startActivity(install); + unregisterReceiver(this); + finish(); + } + }; + + registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); + } }