From 007bef81321fd9659b816fe674166f1a9ffd5f12 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Tue, 26 Apr 2022 03:28:20 +0500 Subject: [PATCH] Added: Add message to bootstrap error if user installed termux on portable/external/removable sd card since its not supported on some devices --- .../main/java/com/termux/app/TermuxInstaller.java | 12 ++++++++++-- app/src/main/res/values/strings.xml | 6 +++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/termux/app/TermuxInstaller.java b/app/src/main/java/com/termux/app/TermuxInstaller.java index 15f48bfd..504b515f 100644 --- a/app/src/main/java/com/termux/app/TermuxInstaller.java +++ b/app/src/main/java/com/termux/app/TermuxInstaller.java @@ -73,7 +73,8 @@ final class TermuxInstaller { // Termux can only be run as the primary user (device owner) since only that // account has the expected file system paths. Verify that: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && !PackageUtils.isCurrentUserThePrimaryUser(activity)) { - bootstrapErrorMessage = activity.getString(R.string.bootstrap_error_not_primary_user_message, MarkdownUtils.getMarkdownCodeForString(TERMUX_PREFIX_DIR_PATH, false)); + bootstrapErrorMessage = activity.getString(R.string.bootstrap_error_not_primary_user_message, + MarkdownUtils.getMarkdownCodeForString(TERMUX_PREFIX_DIR_PATH, false)); Logger.logError(LOG_TAG, "isFilesDirectoryAccessible: " + isFilesDirectoryAccessible); Logger.logError(LOG_TAG, bootstrapErrorMessage); sendBootstrapCrashReportNotification(activity, bootstrapErrorMessage); @@ -84,7 +85,14 @@ final class TermuxInstaller { } if (!isFilesDirectoryAccessible) { - bootstrapErrorMessage = Error.getMinimalErrorString(filesDirectoryAccessibleError) + "\nTERMUX_FILES_DIR: " + MarkdownUtils.getMarkdownCodeForString(TermuxConstants.TERMUX_FILES_DIR_PATH, false); + bootstrapErrorMessage = Error.getMinimalErrorString(filesDirectoryAccessibleError); + //noinspection SdCardPath + if (PackageUtils.isAppInstalledOnExternalStorage(activity) && + !TermuxConstants.TERMUX_FILES_DIR_PATH.equals(activity.getFilesDir().getAbsolutePath().replaceAll("^/data/user/0/", "/data/data/"))) { + bootstrapErrorMessage += "\n\n" + activity.getString(R.string.bootstrap_error_installed_on_portable_sd, + MarkdownUtils.getMarkdownCodeForString(TERMUX_PREFIX_DIR_PATH, false)); + } + Logger.logError(LOG_TAG, bootstrapErrorMessage); sendBootstrapCrashReportNotification(activity, bootstrapErrorMessage); MessageDialogUtils.showMessage(activity, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index acc0f44b..e7e0da60 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -33,7 +33,11 @@ Try again &TERMUX_APP_NAME; can only be run as the primary user. \nBootstrap binaries compiled for &TERMUX_APP_NAME; have hardcoded $PREFIX path and cannot be installed - under any path other than %1$s. + under any path other than:\n%1$s. + &TERMUX_APP_NAME; cannot be installed on + portable/external/removable sd card on your device. + \nBootstrap binaries compiled for &TERMUX_APP_NAME; have hardcoded $PREFIX path and cannot be installed + under any path other than:\n%1$s.