Releases: MuntashirAkon/AppManager
App Manager v4.0.0-beta02
Private messages should be emailed to [email protected]. Emails sent to any other email addresses shall be discarded.
- Added full support for Android 14-r29 and later
App Details page
- [App Info] Added a new tag: Sensors disabled
System may misreport this permission. The best way to check if sensors are indeed disabled is by opening the app first and then visiting the App Info tab leaving the other app running in the background. - [App Info] Added option to enable/disable sensors
- [App Info] Display detailed installer info
An info button is added next to the installer which displays the installer, the actual installer (AKA initiator), and the APK source (originator). Clicking on each item opens the corresponding App Details page. It also fixed displaying the installer app in certain devices. - [App Info] Use the configured naming format when sharing an APK(S)
- Display blocking method in the components tabs
IFW+Dis = The component is blocked using both IFW and disable
IFW = The component is blocked using IFW
Dis = The component is disabled. - Hide “Data usage” for apps without the internet permission
- Disabled “IFW” and “IFW+Disable” in the providers tab
In Rules settings, the description for “Default blocking method” was also updated with a note that says IFW feature does not work with providers, “disable” is used for them instead. - Fixed applying IFW method in the components tabs
Fixed applying IFW rules if the previous rules were “IFW+Disable” or “Disable”.
App Usage page
- Improve the usage time calculation method
The usage events returned by theUsageStatsManager
were assumed to be in order of their timestamp which does not seem to be true and resulted in missing a few events due to the standard calculation method, that is, calculating the time difference between activity resume and pause timestamps. In addition, it appears that the system may log activity stop timestamp without logging any pause timestamp (a typical activity cycle would be resume → pause → stop → resume → …) causing further miss of events. These issues were addressed by sorting the events in order of their timestamp as well as measure the time difference between resume and stop timestamps instead of resume and pause timestamps. - Fixed the “times opened” value
In order to calculate a more reliable number of times an app was opened, the time difference between each activity opening and closing are now relaxed. So, when the user navigates to another activity from an activity belonging to the same app and the time difference is less than 500 ms, the time difference is added to the total usage time. This calculation is technically more precise than the system's own open count because certain navigation involves the use of system UI (e.g., the arrow in the gesture navigation is emitted from the System UI app and should be considered as such) which are ignored. However, the issues with choosing 500 ms (half of a second) time difference are as follows:
1. Due to an user waiting a long time to trigger the back gesture or simply bad coding, an app may take more than this time to open an activity which will cause them to be listed as two accesses.
2. Some apps support multiple windows. If the user opens another activity in a new window shortly after opening the first activity, the two accesses may be counted as one instead of two.
These events are considered extraordinary and can be negligible in a real-life setting.
Backup/restore
- Improved handling custom users in backups
- Properly handle backup/restore for a single app. “Custom users” in the backup options is displayed only if the app is installed for multiple users. Similarly, cross-user restore is supported via the “Custom users” option. In addition, fixed issues causing the backup or restore to be performed for the wrong users.
- Unless the “Custom users” option is selected, backup or restore is made only for the current user in the batch selection mode. Others retain the old behaviour. For example, in the batch selection mode, restore is only made with the “base” backup which is defined to be the primary backup for the current user. So, if “Custom users” option is selected for restore operation, App Manager will try to find the base backup of each selected user and restore those for that user.
These behaviours are applied throughout the app to reduce complexity and remove any ambiguous behaviour. - Fixed creating custom backups
When custom backups are enabled but the backup name is empty, create a custom backup with the current date and time instead of creating a base backup. - Fixed the “cache” “no cache” confusion in the backup flags selection dialog
The “No cache” flag was replaced by the “cache” flag, but the translations still use the former. So, the string ID is altered to invalidate the translations.
DexOpt
- Set default compiler filter from the
pm.dexopt.install
property - Fixed applying force dexopt in Android 14
These fixes may not work for every device. A novel approach is needed to reduce the complexity as well as put an end to the cat-and-mouse game.
File Manager
- Fixed remembering scroll position during navigation
Installer
-
Accelerate the installation process in Android 12 onwards when possible
If an app is being installed in the foreground, App Manager will try to accelerate the installation process by delaying various post-installation tasks carried out by the system services. -
Properly handle the originating URI extra supplied by third-party apps via
Intent.EXTRA_ORIGINATING_URI
-
Set originating package in Android 7 onwards
The originating package is automatically determined from the Intent sent from the third-party apps. However, the determination logic may not always work, but it was ensured that there will not be any false positives, e.g., no spoofing can be done by a third-party app. -
Set package source to
PACKAGE_SOURCE_OTHER
by default in Android 13 onwards
This is done to prevent the system from applying various accessibility restrictions to the app. However,PACKAGE_SOURCE_STORE
is set by default if the originating package is one of the supported app stores. At present, the supported app stores are: Aurora Store, Droid-ify, F-Droid, F-Droid Basic, F-Droid Classic and Neo Store. It is up to the developers to ensure that they send the APK installation requests in a proper way, i.e., by utilizing features such asstartActivityForResult
whenever possible.
Interceptor
- Intercept SAF, dialer, gallery, search, music player, and WhatsApp URLs
Main page
- [Batch Ops] Added option to export app list as CSV and JSON
- Display restore dialog for uninstalled apps with backups
Instead of displaying “App not installed” toast for the uninstalled apps with backups, open the restore dialog instead when clicking on such an item in the Main page. - Fixed retrieving applications when there are too many applications installed on the device
Profiles page
- Display app op names instead of number in the profiles page
Settings page
- Added support for pure black theme
- Added a fallback server runner command from DE storage
Added a fallback server runner command in case SD card is inaccessible from the UID from which the script is being run. This leverages the device encrypted storage (data_de) by making certain folder and files globally accessible. - Fixed displaying custom commands in the mode of ops page
- Fixed the title for the Mode of Ops settings page
UI Tracker
- Display current activity name when possible
In addition to displaying the class name and its hierarchies, the window will display the activity name if there's is an activity (not all windows are activities). This requires the usage stats permission which is enforced here even if it's disabled in the settings. This is because this feature is meant to be used as a useful tool separated from the rest of the app, but with some level of integration. - Fixed freezing issues in certain devices (e.g., Samsung)
Others
- Allow opening an application in Android TV as well as for other users
This feature does not work in the installation completion dialog or notification. - Allow the remote server to run under any privileged UID
- Made notification permission optional
Although denying notification permission will render many features useless, it is made optional for those who insists on denying it. However, the permission shall still be asked everytime the app is launched until it times out. - Updated documentation to reflect latest changes
In addition, Oxygen OS specific ADB instructions were added. - Fixed changing permissions in Android 14-r50 and later
- Fixed deleting the cached application after the installation attempt fails
- Fixed delivering changes made via batch operations
- Fixed issues with executing automated tasks from the third-party applications
- Fixed suspending packages in Android 14-r29 onwards
- Hide Code Editor if it's disabled in settings
Full Changelog: v4.0.0-beta01...v4.0.0-beta02
App Manager v3.1.7 Stable
The email address has been changed to [email protected]. App Manager related queries
sent to the previous email shall be discarded.
- Hid “Data usage” in the App Info tab for apps without the internet permission
- Intercept newer photo viewer actions from the camera app
- Fixed creating custom backups when the backup name is empty
- Fixed freezing issues in the UI Tracker window on some devices
- Fixed delivering changes in apps made via batch operations
- Fixed freezing the app due to the refusal of the notification permission at the startup
Notification permission is mandatory on phones and tabs. Without this permission, you will not be able to use certain features. - Fixed listing running apps on some devices
- Prevented the app from crashing in Android 14 r50
- Prevented the app from crashing when force dexopt is selected in Android 14 onwards
The feature was removed in Android 14.
Full list of changes: v3.1.6...v3.1.7
App Manager v3.1.6 Stable
- Funding campaign dates have been updated as this is going to be the last campaign in many years.
- [Security] Update vulnerable dependencies
Full list of changes: v3.1.5...v3.1.6
App Manager v4.0.0-beta01
Funding campaign dates have been updated as this is going to be the last campaign in many years.
If you're running ADB, you may need to restart your device first.
- Added full support for Android 14
- Fixed compatibility issues
- Support installing apps that targets SDK 22 or earlier (privileged mode only) - [Experimental] Use outlines for color codes
App Details page
- Allowed launching non-exported activities in no-root/ADB mode
The “Search assistant” (usually set to Google Assistant) feature allows setting arbitrary activity via theassistant
key-value pair stored in the secure settings database. Hence, non-exported (that is, app private) activities can be launched even in no-root mode by exploiting this feature. However, modifying a secure setting requireandroid.permission.WRITE_SECURE_SETTINGS
permission which is granted automatically in ADB mode and has to be granted manually in no-root mode via ADB.
App Manager also cannot trigger the assistant on its own in the no-root mode, because it doesn't have enough permissions (it requires android.permission.INEJECT_EVENTS
permission which cannot be granted to the user applications). Activity shortcuts also use this feature when they cannot be launched in privileged mode.
App Usage page
- Make the combo-box static on top
App Info tab
- Fixed handling multiple users in no-root mode
- Fixed listing granted URIs
- Prevent crashes in tablets running buggy GSI firmware
Code Editor
- Prevented the editor from crashing if it is restarted from Recents
Installer
- Enabled installing system apps with a different signature
The “Install only” button is enabled for system apps when the signatures are different. This is useful for only those who have disabled signature verification using methods, such as CorePatch.
Log Viewer
- Added a batch option to copy the selected logs
- Changed list selection modes.
1. Normal mode
- Click: expand/collapse text
- Long click: Open context menu
2. Selection mode
- Click: Select clicked item
- Long click: Select items between the last selected item to the clicked item if possible. Otherwise, only click the item.
Main page
- Avoided reopening the keyboard while searching is active, but the keyboard was closed manually
- [Batch Ops] Fixed saving some APK files due to naming issues
Profiles
- Fixed applying profiles
- Fixed loading label after refreshing the app list
Running Apps page
- Refresh running apps every 10 seconds
Scanner page
- Fixed scanning using VirusTotal
Settings
- [Experimental] Initial support for custom command
- Avoided auto-detecting ADB port number if Wi-Fi is inactive
- Display ADB pairing dialog directly when a pairing may be required
- Improved auto-connecting to ADB
- When mode is set to auto, instead of checking the active ADB host and port first, the status of the ADB daemon is checked
- When mode is set to “Wireless debugging”, developer settings and wireless debugging are enabled automatically before attempting any connections. This requires:
1.android.permission.WRITE_SECURE_SETTINGS
to be granted to App Manager, OR
2. App Manager connected via root or ADB at least once (in which case, the permission above is granted automatically)
- Attempt to fetch the current port for ADB over TCP viaservice.adb.tcp.port
property instead of using the default5555
port or the previously saved value. - Pair ADB via notification
- Improved preferences and dialogs
- Added a dedicated page for VirusTotal
- Added a dedicated page for mode of operations
- Moved “Use the Internet” to Privacy settings
- Added feature toggler for Log Viewer and Installer
- Display build expiry and funding campaign notices only in the main settings
- Replace “Remove all rules” with a primary button
- Input boxes are focused by default
- For numeric inputs, only the numeric keyboard is displayed
- Input texts aren't added to the user suggestions. - Avoided displaying “Imported” for Watt and Blocker when nothing is selected
- Check if the selected directory is actually a directory before attempting to import a backup
- Fixed displaying wireless debugging options when App Manager is unable to enable Wireless Debugging.
UI
- Draw activities around the display cutouts
- Tint combo-boxes in primary container color to match Android 12+ styles
- Used circular progress for initialization
- Fixed styling some popup menus.
Others
- Added more network policies from Motorola devices.
- POLICY_REJECT_METERED
- POLICY_REJECT_BACKGROUND
- POLICY_REJECT_ALL - Automatically grant usage stats permission in privileged mode
The feature, as usual, can be disabled in settings. - Enabled creating activity shortcuts for other users
- Avoided fetching packages for other users if there's no permission to do so
- Fixed blocking components in Android 14
- Fixed blocking providers when only IFW is set
Intent Firewall (IFW) does not support blocking providers. So, when IFW-only mode was enabled, it tried to apply only the IFW rules which resulted in the providers remaining unblocked. From now on, the providers are blocked via “disable” option. - Fixed launching remote services in OnePlus devices
- Fixed retrieving the list of packages in some devices
- Fixed retrieving and updating permission flags in Android 12 onwards
Full list of changes: v4.0.0-alpha02...v4.0.0-beta01
App Manager v3.1.5 Stable
- Check if the selected item is a directory before importing backups
- Fixed disabling components in Android 14
- Fixed retrieving and updating permission flags in Android 12 onwards
- Prevented the Log Viewer page from crashing on device configuration changes
Full Changelog: v3.1.4...v3.1.5
App Manager v3.1.4 Stable
- Fixed an intermittent crash in the App Info tab
- Fixed disabling components in Android 14
Full Changelog: v3.1.3...v3.1.4
App Manager v3.1.3 Stable
- Avoided displaying “Imported” message when no file is selected during importing rules from Watt or Blocker
- Avoided fetching app list for other users if there's not enough permission
- Fixed a typo in German strings
- Fixed installing apps for users other than the main user in no-root mode
- Fixed loading the list of packages in some devices
- Prevented the app from crashing when filename returned by SAF is null (empty)
- Skipped loading usage for uninstalled packages
Full Changelog: v3.1.2...v3.1.3
App Manager v4.0.0-alpha02
For contributors: Building App Manager now requires Java 17 (or later).
Main page
- [Batch ops] Added an option to create a new profile in the “Add to profile” dialog
- [Batch ops] Fixed saving APKS with dependencies
App Details page
- Improved loading performance
- Fixed setting mode for some app ops
In the app ops tab, the toggle button as well as the long click options attempts to alter the associated permission too if it exists. To bypass this behaviour, use “Set custom app op” from the three-dots menu instead.
App Info tab
- Added an option to create a new profile in the “Add to profile” dialog
- Improved performance by loading UI contents in the background
- Hide data usage for other users
Data usage section is hidden if the following conditions are true:
1. OS is Android 6.0 onwards
2. The app does not belong to the current user, and
3. Self or remote UID is not system UID. - Fixed displaying wrong information regarding blocked trackers
- Prevented the app from crashing on attempting to enable battery optimisation of restricted apps
Battery optimisation cannot be enabled for system restricted apps.
Debloater
- Display a loader in details dialog to avoid freezing issues
Editor
- Check if the file is writable during “Save and exit”
- Prevented erroneous display of “Read only” warning for files that support writing
File Manager
- Display “Loading...” as the subtitle instead of showing previous folder info
- Display only the filename in the “Open with…” dialog
- Display progress for batch rename, delete and paste operations
- Improved listing files in a directory, especially Storage Access Framework (SAF)
- Fixed displaying search bar in the “Open with…” dialog
- Fixed retrieving files if a folder contains thousands of files
- Prevented looping indefinitely when an inaccessible file is a symbolic link
Installer
- Fixed installing APK files queued in the background
- Fixed installing some signed APK files
Some signed APKs could not be installed due size mismatch.
Interceptor
- Added a few intent filters related to camera
Profile page
- Added an option to copy profile ID
- Display exit confirmation dialog if there are unsaved changes
- Display previously selected apps on top of the app list
- Display warning before deleting a profile
- Avoid creating duplicate profiles by auto-renaming the newly-created profile
- Fixed displaying backup options in configurations tab
Profiles page
- Added an option to copy profile ID
- Use profile ID instead of profile name for identifying each profile
In profile version 1, there's no difference between profile name and profile ID. But from profile version 2, a new fieldid
shall be introduced which will be decoupled profile name from its ID, making it possible to use any name for profile or rename it. If you use automation, make sure to use profile ID instead of profile name. - Auto-select the configured profile state in “Apply profile” dialog
- Handled applying multiple profiles using a queue
- Moved shortcut handling logic to a different activity
To avoid opening existing tasks from Recents, shortcuts are handled in a separate task. - Optimised updating new or modified profile information
Running Apps page
- Fixed listing processes when some PIDs no longer exist
Security
- Check for zip-slip vulnerability before creating a folder or a symbolic link
- Disabled access to
content://
in WebView - Sanitize user inputs, intents when it involves files and filenames
- Use formatted string for logging to prevent log injections
Settings
- Fixed navigating one step back after a device configuration is changed
UI Tracker
- Added the ability to drag the icon when iconified
- Added the ability to drag the window outside the visible display
- Used 60% transparent window
Usage
- Fixed retrieving mobile data usage in Android 12 and earlier
Others
- Enabled fast scrolling in the user manual page
- Use definite mode of operation
When the mode of operation is set to auto, App Manager will attempt to find the best mode and set it as the current mode instead of “Auto” in order to improve the startup time as well as allow stable access of service via upcoming App Manager SDK. - Use marquee texts in suggestions/dropdown menu
- Use wakelocks in long-running tasks to keep the CPU awake
- Fixed retrieving list of packages in some devices
- Fixed uploading APK files to VirusTotal
- Made setting UID/GID optional while extracting a tar archive
- Prevented the app from crashing due to
forceDexOpt
failing in Android 12
In Android 12,forceDexOpt
always fails due to a bug in the Android framework. As a workaround, the optimisation is done viaperformDexOptMode
imitating whateverforceDexOpt
does.
Full Changelog: v4.0.0-alpha01...v4.0.0-alpha02
App Manager v3.1.2 Stable
App Manager is now on Matrix!
- [App Info] Hide data usage for other users
- [ADB] Fixed clicking the links in the “Incomplete USB debugging” dialog
- [Installer] Fixed installing some signed APK files
- [Docs] Fixed links to App Manager settings page
- [Installer] Fixed parsing unsigned APK files
- [Settings] Fixed navigating one step back after a device configuration is changed
- [Settings] Fixed saving a backup option: Cache
- [Batch Ops] Fixed saving APKS with dependencies
- Enabled fast scrolling in the user manual page
- Fixed extracting tar archives in a volume with no support for permissions, UID and/or GID
- Fixed navigating one step back after a device configuration is changed
- Prevented crashes in Android 14
Full Changelog: v3.1.1...v3.1.2
App Manager v4.0.0-alpha01
Due to the massive number of changes, v3.2.x is skipped in favour of v4.0.0. For the same reason the release notes
provided here are incomplete as only the most useful ones are noted.
App Manager is now on Matrix!
App Info
- Added a new tag: Bloatware
Clicking on the tag opens a dialog containing description, dependencies, alternatives, etc. like in the Debloater page described below. - Added a new tag: Xposed
Clicking on the tag opens a dialog with more details:- Module name
- Description
- Type of module (modern or legacy)
- Xposed API dependency info
- Scope (if available statically).
- List SAF files and directories in a user-friendly manner
Instead of a raw representation of the granted URI, display authority, type of file or folder, and the file or folder itself in a meaningful way. It also attempts to retrieve the original file path when possible.
Backup/Restore
- Display backup extras and rules in no-root mode
Debloater
- Display bloatware details on clicking on an item
Current the following information are displayed with visual enhancements:- App icon (valid only when the app is installed)
- App label
- Package name
- App info button (if the app is installed)
- Tags (list type and removal type for now)
- Warning (if exists)
- Description with references
- Dependencies
- Suggestions/alternatives.
- App list is now taken from android-debloat-list
android-debloat-list is a new project aimed at improving debloating experience by listing the details in a more structured way and list potential alternatives of the bloatware with usability and reproducibility in mind.
Docs
- Fixed App Manager links in the docs
Editor
- Enabled editing files via Code Editor from third-party applications
- Enabled editing AXML (Android APK's binary XML format) files
- Improved memory usage during loading or saving a file
- Fixed clearing texts on configuration changes
- Fixed writing to files that were managed by ContentProvider
Explorer
- Avoided decoding AXML files
Decoding should be done by code editors, not explorers.
Files
- Added a floating action button to create new files, folders and links
It allows creating a few blank documents. They include: text files, PDF, documents (docx/odt), sheet (xlsx/ods), presentation (pptx, odp) and SQLite3 database. - Added intent-filters that allows opening folders from third-party apps
- Display path navigation on top
Using the path navigation, it is possible to navigate to any parent folders quite easily, or navigate to any arbitrary location using the “Edit” or “Go to” button.
Long clicking on any path also displays a popup menu which can be used to copy the path, open it in a new window or view properties. - Display thumbnails for supported files
- Implemented all the unimplemented features in popup menus
Implemented copy- and cut-paste options, shortcut creation, multiple selection options such as batch renaming, deletion, cut/copying and sharing. Note that copy and paste options are experimental and should be handled with care. - Implemented settings for file manager
Added option to set home directory, remember last opened folder and position, and whether to display the file manager as “Files” in the app drawer like a regular app. - Added searching in the “Open with” dialog
- Added support for SAF/tree URIs
SAF access is currently very slow and its usage isn't recommended if there are a lot of files in the folder. - Display folder info (size, file count, etc.) as a subtitle
- Display helpful messages when a folder is empty, non-existent or invalid
- Implemented modification of access and modification dates, permissions, UID/GID and SELinux context in the properties dialog
- Open resolved symbolic link instead of the link itself
- Remember the selection locations for past opened folders in a session
- Use file overlays to display directories inaccessible in no-root mode
Installer
- Added an option to perform DEX optimisation immediately after installing an app
- Added the ability to modify installer options before installing an app
In the installation dialog, clicking on the settings/cog icon opens a new dialog where the installer options can be temporarily set for the session. Any items queued for the session will retain those temporary options. - Display installation progress in the notification
In some devices such as Samsung, it takes an indefinite amount of time to verify the app after copying the APK files. For those cases, the progress won't be accurate as it only takes into account the amount of time to copy the files. - Display “Confirm install” notification even if the app is running in foreground
In no-root mode, when the app is running in foreground, the user may accidentally dismiss the install-confirmation dialog produced by the Android package installer which would either allow the installation to run forever or for a minute until the timeout occurs. To solve the issue, a silent notification is triggered at the same time the dialog is shown so that even if the user accidentally dismisses the dialog, the dialog can still be displayed by clicking the notification. - Fixed parsing unsigned APK files
- Fixed installing apps for users other than the main profile
Interceptor
- Prevented the app from crashing on creating a shortcut with invalid extras
Shortcuts support only 11 types of data structures. Intents, on the other hand, support any type of data structures. When a shortcut creation is requested, the unsupported data structures are removed from the Intent to avoid crashes.
Labs
- Display “System Config” page in all modes of operation
Main page
- Added a new filtering option “Stopped apps“ to filter the force-stopped apps
- Added filtering by users in the list options
- Added a new batch operation “Optimise” to dex optimisation of the selected apps
- Display user count alongside app ID
If an app is installed in more than one profiles (that is, for multiple users), instead of displaying only the kernel user ID (UID), display the app ID (that is, UID sans the user ID) and user count in the following format:<user count>+<app ID>
Scanner
- Display link to Pithus report if available
- Calculate file hashes more efficiently
- Fixed scanning external APK files in privileged mode
Settings
-
Added options to run App Manager in the background
In Settings > Privacy, two new options have been added:- Run App Manager in the background
- Automatic lockdown
Running App Manager in the background makes the annoying “Initializing” screen go away. Due to possible privacy issues, this option is disabled by default. When automatic lockdown is enabled, App Manager will attempt to lock the app by killing its process. As expected, there are several side effects:
- All the activities will be closed. They'll be reopened by the system based on how the user was interacting with them
- All the running operations as well as scheduled or running jobs will be stopped immediately. This might cause data loss if potentially destructive operations are running.
Note: Enabling the latter option does not wipe the memory of App Manager, i.e. it does not prevent a forensic software from scrapping the memory used by App Manager even if the process no longer exists.
-
Added option to disable sending notification to the connected devices
The setting is located at “Settings > Advanced > Send notifications to the connected devices” and is enabled by default. Low importance notifications, e.g. ongoing notifications and optional alerts, won't be delivered to the connected devices even if the setting is enabled. -
Fixed saving backup options
-
Prevented a crash that occurs on importing the rules if some of them are invalid
UI
- Better handling of application-wide notifications including the progress of various operations
- Display all multi-selection options in a single row with an overflow menu at the end
- Display icons in popup menus
- Display shortcut editor before creating a shortcut along with a preview panel
- Improved layouts of popup and dropdown menus
Usage
- Fetch data usage for all apps in Android 5 and 5.1
- Fetch usage stats and package size info only when the feature is enabled
- Reduced lags by recycling views
Others
- New mode of operation: System (UID 100)
- Enabled backing up data from App Manager via Android-default backup systems
- Improved DEX optimiser
DEX optimiser now works in no-root mode for apps installed with App Manager. In 1-Click Ops page, when DEX optimiser is run, it attempts to optimise all apps in privileged mode. But in unprivileged mode, it only attempts to optimise apps installed by App Manager. The option is also displayed in the App Info tab in no-root mode for apps installed by App Manager. - Only allow connections from supported online locations
To avoid issues with ADB, localhost is allowed unrestricted connections, but other websites, namely virustotal.com and pithus.org, are restricted via public key pinning (PKP) using network security configuration. - Replaced the usernames “Main” and “Work” with “This” and “Other”
In no-root mode, usernames cannot be fetched from the system. Hence, “Main” and “Work” are inferred based on the status of the system. However, this can cause issues if the app is installed in the Work profile. Instead, the names “This” and “Other” are used to clarify the situation. - Schedule cache cleaning job more actively to ensure App Manager's caches are cleared regularly
- Use granted permissions rather than the mode of operation to check the eligibility of a feature
- Prevented crashing in Android 14 due to c...