Skip to content

Commit 66525a8

Browse files
committed
fix: OTA install button had enough the right permission
1 parent 4d8b629 commit 66525a8

3 files changed

Lines changed: 14 additions & 38 deletions

File tree

‎app/src/main/java/com/drivehub/kamera/OtaController.java‎

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import androidx.appcompat.app.AppCompatActivity;
1919
import androidx.core.content.ContextCompat;
20-
import androidx.core.content.FileProvider;
2120
import java.util.Locale;
2221

2322
final class OtaController {
@@ -141,7 +140,7 @@ private void showProgressDialog(OtaUpdateManager.UpdateInfo info, long downloadI
141140
activity,
142141
activity.getString(R.string.ota_dialog_download_started_message, info.latestVersion),
143142
() -> retryDownload(downloadId),
144-
() -> installUpdate(downloadId)
143+
this::openDownloadsFolder
145144
);
146145
progressDialog = handle.dialog;
147146
progressDialog.setOnDismissListener(d -> stopProgressWatcher());
@@ -293,48 +292,25 @@ private void startVerification(long downloadId, TextView statusView, View instal
293292
// Install
294293
// -------------------------------------------------------------------------
295294

296-
private void installUpdate(long downloadId) {
295+
private void openDownloadsFolder() {
297296
try {
298-
Uri apkUri = resolveInstallApkUri(downloadId);
299-
Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
300-
installIntent.setData(apkUri);
301-
installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
302-
installIntent.putExtra(Intent.EXTRA_RETURN_RESULT, false);
297+
Intent downloadsIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
298+
downloadsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
303299

304300
android.content.pm.PackageManager pm = activity.getPackageManager();
305-
if (pm != null && installIntent.resolveActivity(pm) != null) {
306-
activity.startActivity(installIntent);
301+
if (pm != null && downloadsIntent.resolveActivity(pm) != null) {
302+
activity.startActivity(downloadsIntent);
307303
return;
308304
}
309-
Intent fallback = new Intent(Intent.ACTION_VIEW);
310-
fallback.setDataAndType(apkUri, "application/vnd.android.package-archive");
311-
fallback.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
312-
activity.startActivity(fallback);
305+
throw new IllegalStateException("Downloads app not available");
313306
} catch (Exception e) {
314307
OtaDialogs.showMessageDialog(
315308
activity,
316-
activity.getString(R.string.ota_dialog_install_failed_message, e.getClass().getSimpleName())
309+
activity.getString(R.string.ota_dialog_open_downloads_failed_message, e.getClass().getSimpleName())
317310
);
318311
}
319312
}
320313

321-
private Uri resolveInstallApkUri(long downloadId) throws Exception {
322-
Uri downloadedUri = resolveDownloadedApkUri(downloadId);
323-
if (downloadedUri != null && !"file".equalsIgnoreCase(downloadedUri.getScheme())) {
324-
return downloadedUri;
325-
}
326-
327-
java.io.File apkFile = resolveDownloadedApkFile(downloadId);
328-
if (apkFile == null || !apkFile.exists()) {
329-
throw new IllegalStateException("Downloaded APK not found");
330-
}
331-
return FileProvider.getUriForFile(
332-
activity,
333-
BuildConfig.APPLICATION_ID + ".fileprovider",
334-
apkFile
335-
);
336-
}
337-
338314
private java.io.File resolveDownloadedApkFile(long downloadId) throws Exception {
339315
DownloadManager dm = activity.getSystemService(DownloadManager.class);
340316
if (dm == null) return null;

‎app/src/main/res/values-de/strings.xml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
<string name="ota_dialog_mobile_warning_message">Der Download von Version %1$s kann mobiles Datenvolumen des Fahrzeugs verbrauchen, wenn das Auto nicht mit WLAN verbunden ist. Möchtest du fortfahren?</string>
7373
<string name="ota_dialog_download_started_message">Das Update für Version %1$s wird jetzt geschützt heruntergeladen.</string>
7474
<string name="ota_dialog_download_failed_message">Der Update-Download konnte nicht gestartet werden (%1$s).</string>
75-
<string name="ota_dialog_install_failed_message">Der Installer konnte nicht geöffnet werden (%1$s).</string>
75+
<string name="ota_dialog_open_downloads_failed_message">Der Download-Ordner konnte nicht geöffnet werden (%1$s).</string>
7676
<string name="ota_error_no_hash">Im neuesten Release fehlt ein SHA-256-Asset für die APK</string>
7777
<string name="ota_error_invalid_hash">Das SHA-256-Asset des neuesten Releases ist ungültig</string>
7878
<string name="ota_error_no_release">Es konnte kein Release gefunden werden</string>
@@ -84,7 +84,7 @@
8484
<string name="ota_progress_paused_reason">Download pausiert bei %1$d%% (%2$s)</string>
8585
<string name="ota_progress_complete">Download abgeschlossen. Paketintegrität wird geprüft…</string>
8686
<string name="ota_progress_verifying">Prüfe Download-Integrität…</string>
87-
<string name="ota_progress_verified">Integritätsprüfung bestanden. Bereit zur Installation.</string>
87+
<string name="ota_progress_verified">Integritätsprüfung bestanden. Das Update liegt jetzt im Download-Ordner bereit.</string>
8888
<string name="ota_progress_integrity_failed">Integritätsprüfung fehlgeschlagen (%1$s).</string>
8989
<string name="ota_progress_failed">Download fehlgeschlagen. Du kannst den OTA-Download erneut starten.</string>
9090
<string name="ota_progress_failed_reason">Download fehlgeschlagen (%1$s). Du kannst den OTA-Download erneut starten.</string>
@@ -94,7 +94,7 @@
9494
<string name="ota_action_close">Schließen</string>
9595
<string name="ota_action_download_anyway">Fortfahren</string>
9696
<string name="ota_action_retry_download">Download erneut</string>
97-
<string name="ota_action_install_update">Update installieren</string>
97+
<string name="ota_action_install_update">Downloads öffnen</string>
9898
<string name="ota_toast_checking">Suche nach Updates…</string>
9999
<string name="ota_error_no_apk">Im neuesten Release wurde kein APK-Asset gefunden</string>
100100
<string name="ota_update_hint">Über das Update-Badge unten kannst du Updates direkt installieren.</string>

‎app/src/main/res/values/strings.xml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
<string name="ota_dialog_mobile_warning_message">Downloading version %1$s may use the car\'s mobile data if the vehicle is not connected to Wi-Fi. Do you want to continue?</string>
7373
<string name="ota_dialog_download_started_message">The update for version %1$s is now being downloaded securely.</string>
7474
<string name="ota_dialog_download_failed_message">The update download could not be started (%1$s).</string>
75-
<string name="ota_dialog_install_failed_message">The installer could not be opened (%1$s).</string>
75+
<string name="ota_dialog_open_downloads_failed_message">The Downloads folder could not be opened (%1$s).</string>
7676
<string name="ota_error_no_hash">Latest release has no SHA-256 asset for the APK</string>
7777
<string name="ota_error_invalid_hash">Latest release SHA-256 asset is invalid</string>
7878
<string name="ota_error_no_release">No release could be found</string>
@@ -84,7 +84,7 @@
8484
<string name="ota_progress_paused_reason">Download paused at %1$d%% (%2$s)</string>
8585
<string name="ota_progress_complete">Download complete. Verifying package integrity…</string>
8686
<string name="ota_progress_verifying">Verifying download integrity…</string>
87-
<string name="ota_progress_verified">Integrity check passed. Ready to install.</string>
87+
<string name="ota_progress_verified">Integrity check passed. The update is ready in Downloads.</string>
8888
<string name="ota_progress_integrity_failed">Integrity check failed (%1$s).</string>
8989
<string name="ota_progress_failed">Download failed. You can retry the OTA download.</string>
9090
<string name="ota_progress_failed_reason">Download failed (%1$s). You can retry the OTA download.</string>
@@ -94,7 +94,7 @@
9494
<string name="ota_action_close">Close</string>
9595
<string name="ota_action_download_anyway">Download anyway</string>
9696
<string name="ota_action_retry_download">Retry download</string>
97-
<string name="ota_action_install_update">Install update</string>
97+
<string name="ota_action_install_update">Open Downloads</string>
9898
<string name="ota_toast_checking">Checking for updates…</string>
9999
<string name="ota_error_no_apk">Latest release has no APK asset</string>
100100
<string name="ota_update_hint">Use the update badge at the bottom to refresh or start the download.</string>

0 commit comments

Comments
 (0)