From af6ac30bb1b062ccca5813e65380c8cafe20eaa3 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Tue, 14 Jun 2022 03:56:00 +0500 Subject: [PATCH] Added: Allow users to disable termux file view and share receivers The user can add `disable-file-share-receiver=true` entry to `termux.properties` file to disable termux from showing in Android file `Share With` apps list. The user can add `disable-file-view-receiver=true` entry to `termux.properties` file to disable termux from showing in Android file `Open With` apps list. The default value is `false`. Restarting termux app or running `termux-reload-settings` command will update the behaviour instantaneously if changed. Closes #2549 --- app/src/main/AndroidManifest.xml | 21 ++++++-- .../java/com/termux/app/TermuxActivity.java | 5 ++ .../api/file/FileReceiverActivity.java} | 52 ++++++++++++++++--- .../api/file/FileReceiverActivityTest.java} | 10 ++-- .../termux/shared/termux/TermuxConstants.java | 12 ++++- .../properties/TermuxPropertyConstants.java | 17 +++++- .../properties/TermuxSharedProperties.java | 9 ++++ 7 files changed, 109 insertions(+), 17 deletions(-) rename app/src/main/java/com/termux/{filepicker/TermuxFileReceiverActivity.java => app/api/file/FileReceiverActivity.java} (80%) rename app/src/test/java/com/termux/{filepicker/TermuxFileReceiverActivityTest.java => app/api/file/FileReceiverActivityTest.java} (77%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6a9ac9ff..4e95702b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -109,14 +109,19 @@ android:documentLaunchMode="intoExisting" /> + + + @@ -132,6 +137,13 @@ + + + + @@ -144,8 +156,7 @@ - - + invalidUrls = new ArrayList<>(); invalidUrls.add("a test with example.com"); for (String url : invalidUrls) { - Assert.assertFalse(TermuxFileReceiverActivity.isSharedTextAnUrl(url)); + Assert.assertFalse(FileReceiverActivity.isSharedTextAnUrl(url)); } } diff --git a/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java b/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java index 8678027e..203f514f 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java @@ -11,7 +11,7 @@ import java.util.Formatter; import java.util.List; /* - * Version: v0.50.0 + * Version: v0.51.0 * SPDX-License-Identifier: MIT * * Changelog @@ -271,6 +271,9 @@ import java.util.List; * * - 0.50.0 (2022-06-11) * - Added `TERMUX_CONFIG_PREFIX_DIR_PATH`, `TERMUX_ENV_FILE_PATH` and `TERMUX_ENV_TEMP_FILE_PATH`. + * + * - 0.51.0 (2022-06-13) + * - Added `TERMUX_APP.FILE_SHARE_RECEIVER_ACTIVITY_CLASS_NAME` and `TERMUX_APP.FILE_VIEW_RECEIVER_ACTIVITY_CLASS_NAME`. */ /** @@ -907,9 +910,16 @@ public final class TermuxConstants { /** termux-am socket file path */ public static final String TERMUX_AM_SOCKET_FILE_PATH = APPS_DIR_PATH + "/termux-am/am.sock"; // Default: "/data/data/com.termux/files/apps/com.termux/termux-am/am.sock" + /** Termux app BuildConfig class name */ public static final String BUILD_CONFIG_CLASS_NAME = TERMUX_PACKAGE_NAME + ".BuildConfig"; // Default: "com.termux.BuildConfig" + /** Termux app FileShareReceiverActivity class name */ + public static final String FILE_SHARE_RECEIVER_ACTIVITY_CLASS_NAME = TERMUX_PACKAGE_NAME + ".app.api.file.FileShareReceiverActivity"; // Default: "com.termux.app.api.file.FileShareReceiverActivity" + + /** Termux app FileViewReceiverActivity class name */ + public static final String FILE_VIEW_RECEIVER_ACTIVITY_CLASS_NAME = TERMUX_PACKAGE_NAME + ".app.api.file.FileViewReceiverActivity"; // Default: "com.termux.app.api.file.FileViewReceiverActivity" + /** Termux app core activity name. */ public static final String TERMUX_ACTIVITY_NAME = TERMUX_PACKAGE_NAME + ".app.TermuxActivity"; // Default: "com.termux.app.TermuxActivity" diff --git a/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxPropertyConstants.java b/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxPropertyConstants.java index 643b1ddd..8fcbf629 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxPropertyConstants.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxPropertyConstants.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Set; /* - * Version: v0.17.0 + * Version: v0.18.0 * SPDX-License-Identifier: MIT * * Changelog @@ -77,6 +77,9 @@ import java.util.Set; * * - 0.17.0 (2022-03-17) * - Add `KEY_DELETE_TMPDIR_FILES_OLDER_THAN_X_DAYS_ON_EXIT`. + * + * - 0.18.0 (2022-06-13) + * - Add `KEY_DISABLE_FILE_SHARE_RECEIVER` and `KEY_DISABLE_FILE_VIEW_RECEIVER`. */ /** @@ -96,6 +99,14 @@ public final class TermuxPropertyConstants { /* boolean */ + /** Defines the key for whether file share receiver of the app is enabled. */ + public static final String KEY_DISABLE_FILE_SHARE_RECEIVER = "disable-file-share-receiver"; // Default: "disable-file-share-receiver" + + /** Defines the key for whether file view receiver of the app is enabled. */ + public static final String KEY_DISABLE_FILE_VIEW_RECEIVER = "disable-file-view-receiver"; // Default: "disable-file-view-receiver" + + + /** Defines the key for whether hardware keyboard shortcuts are enabled. */ public static final String KEY_DISABLE_HARDWARE_KEYBOARD_SHORTCUTS = "disable-hardware-keyboard-shortcuts"; // Default: "disable-hardware-keyboard-shortcuts" @@ -380,6 +391,8 @@ public final class TermuxPropertyConstants { * */ public static final Set TERMUX_APP_PROPERTIES_LIST = new HashSet<>(Arrays.asList( /* boolean */ + KEY_DISABLE_FILE_SHARE_RECEIVER, + KEY_DISABLE_FILE_VIEW_RECEIVER, KEY_DISABLE_HARDWARE_KEYBOARD_SHORTCUTS, KEY_DISABLE_TERMINAL_SESSION_CHANGE_TOAST, KEY_ENFORCE_CHAR_BASED_INPUT, @@ -426,6 +439,8 @@ public final class TermuxPropertyConstants { * default: false */ public static final Set TERMUX_DEFAULT_FALSE_BOOLEAN_BEHAVIOUR_PROPERTIES_LIST = new HashSet<>(Arrays.asList( + KEY_DISABLE_FILE_SHARE_RECEIVER, + KEY_DISABLE_FILE_VIEW_RECEIVER, KEY_DISABLE_HARDWARE_KEYBOARD_SHORTCUTS, KEY_DISABLE_TERMINAL_SESSION_CHANGE_TOAST, KEY_ENFORCE_CHAR_BASED_INPUT, diff --git a/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxSharedProperties.java b/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxSharedProperties.java index ad863e9c..cd1d0ec0 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxSharedProperties.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/settings/properties/TermuxSharedProperties.java @@ -563,6 +563,15 @@ public abstract class TermuxSharedProperties { public boolean shouldAllowExternalApps() { return (boolean) getInternalPropertyValue(TermuxConstants.PROP_ALLOW_EXTERNAL_APPS, true); } + + public boolean isFileShareReceiverDisabled() { + return (boolean) getInternalPropertyValue(TermuxPropertyConstants.KEY_DISABLE_FILE_SHARE_RECEIVER, true); + } + + public boolean isFileViewReceiverDisabled() { + return (boolean) getInternalPropertyValue(TermuxPropertyConstants.KEY_DISABLE_FILE_VIEW_RECEIVER, true); + } + public boolean areHardwareKeyboardShortcutsDisabled() { return (boolean) getInternalPropertyValue(TermuxPropertyConstants.KEY_DISABLE_HARDWARE_KEYBOARD_SHORTCUTS, true); }