From 9a029af8dd5ed778fd51ecd7303d751ea4e39237 Mon Sep 17 00:00:00 2001 From: afischerdev Date: Sun, 9 Jul 2023 18:22:25 +0200 Subject: [PATCH] protect against limited data size --- .../btools/routingapp/BInstallerActivity.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java b/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java index e93bb31..ba3f704 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java @@ -197,18 +197,30 @@ public class BInstallerActivity extends AppCompatActivity { public void downloadAll(ArrayList downloadList, int all) { ArrayList urlparts = new ArrayList<>(); + int len = 0; for (Integer i : downloadList) { urlparts.add(baseNameForTile(i)); + len++; + if (len > 500) break; // don't do too much work, data size 10240 Bytes only } downloadCanceled = false; mProgressIndicator.show(); mButtonDownload.setEnabled(false); - Data inputData = new Data.Builder() - .putStringArray(DownloadWorker.KEY_INPUT_SEGMENT_NAMES, urlparts.toArray(new String[0])) - .putInt(DownloadWorker.KEY_INPUT_SEGMENT_ALL, all) - .build(); + Data inputData = null; + try { + inputData = new Data.Builder() + .putStringArray(DownloadWorker.KEY_INPUT_SEGMENT_NAMES, urlparts.toArray(new String[0])) + .putInt(DownloadWorker.KEY_INPUT_SEGMENT_ALL, all) + .build(); + + } catch (IllegalStateException e) { + Toast.makeText(this, "Too much data for download. Please reduce.", Toast.LENGTH_LONG).show(); + + e.printStackTrace(); + return; + } Constraints constraints = new Constraints.Builder() .setRequiresBatteryNotLow(true)