Freezing an app?
Many of you have been written to me in the past regarding the freezing of an app in Android, and it also appears that the opinions regarding this keyword differ widely. So, let me explain to you what freezing means and why the opinions differ and what steps App Manager might take to clear this up.
Overview
Android framework DOES NOT use any terminology that goes by the name freezing. This particular terminology, I believe, is popularised by Titanium Backup as well as Link2SD in the early days. Later many other developers, as the term is well known among the users, had also adopted the terminology. However, since Android is a sufficiently dynamic operating system, new features are always introduced, and freezing, it seems, has also evolved.
Understanding the operations on an Android app
Android supports several operations related to freezing. If we are to sort them in the order of their strength, they could be listed as follows: force-stop, suspend (Android N and onwards), disable, hide (previously called block), uninstall.
1. Force-stop. This simply stops an app from running either in the foreground or in the background for a time being. The app can still be activated anytime by the user, another app, alarm manager (which manages execution of a service at a certain point in time) or a system broadcast receiver. (For developers, it issues PACKAGE_CHANGED intent.)
2. Suspend. This is similar to disable (see below) but it’s intended for the device admin apps. In this case, the app might still be visible in your launcher, but it might be grayed out, and when you would try to launch it, it would issue an warning that the app may not be available at the moment as it is suspended by an app. But it entirely depends on how your launcher handles it. This is lesser than disable because it does not actually disable the app or its components. (For developers, it issues PACKAGES_SUSPENDED or PACKAGES_UNSUSPENDED intent.)
3. Disable. This disables an app along with all its components. Since the app will not have any activity that can be launched, it will not be present in the list of apps in the launcher. (For developers, it issues PACKAGE_CHANGED intent.)
4. Hide. This used to be known as block until the AOSP team renamed it to hide. This is similar to suspend except that the app behaves as if it has been uninstalled from the system and remains hidden from the launcher. (For developers, it issues PACKAGE_REMOVED or PACKAGE_ADDED intent.)
5. Uninstall. This operation completely or partially uninstalls the app from the system depending on whether you choose to retain its data. Note that data also include the signature of the app. So, if you chose to retain its data during the uninstallation but later wanted to install the same app with a different signature, the installation would fail.
App Manager's take on freezing
The term freeze denotes one of 2–4 operations/actions described above (i.e. suspend, disable or hide), depending on the app that the user is familiar with. In App Manager, instead of displaying all three actions separately in the app info tab (just think how much space would it take for, more or less, the same feature) or elsewhere, a single action, namely freeze, would be added, replacing the current disable action. In settings, an option would be added to configure how this action would behave. For compatibility reasons, the default behaviour would be disable.
Many of you have been written to me in the past regarding the freezing of an app in Android, and it also appears that the opinions regarding this keyword differ widely. So, let me explain to you what freezing means and why the opinions differ and what steps App Manager might take to clear this up.
Overview
Android framework DOES NOT use any terminology that goes by the name freezing. This particular terminology, I believe, is popularised by Titanium Backup as well as Link2SD in the early days. Later many other developers, as the term is well known among the users, had also adopted the terminology. However, since Android is a sufficiently dynamic operating system, new features are always introduced, and freezing, it seems, has also evolved.
Understanding the operations on an Android app
Android supports several operations related to freezing. If we are to sort them in the order of their strength, they could be listed as follows: force-stop, suspend (Android N and onwards), disable, hide (previously called block), uninstall.
1. Force-stop. This simply stops an app from running either in the foreground or in the background for a time being. The app can still be activated anytime by the user, another app, alarm manager (which manages execution of a service at a certain point in time) or a system broadcast receiver. (For developers, it issues PACKAGE_CHANGED intent.)
2. Suspend. This is similar to disable (see below) but it’s intended for the device admin apps. In this case, the app might still be visible in your launcher, but it might be grayed out, and when you would try to launch it, it would issue an warning that the app may not be available at the moment as it is suspended by an app. But it entirely depends on how your launcher handles it. This is lesser than disable because it does not actually disable the app or its components. (For developers, it issues PACKAGES_SUSPENDED or PACKAGES_UNSUSPENDED intent.)
3. Disable. This disables an app along with all its components. Since the app will not have any activity that can be launched, it will not be present in the list of apps in the launcher. (For developers, it issues PACKAGE_CHANGED intent.)
4. Hide. This used to be known as block until the AOSP team renamed it to hide. This is similar to suspend except that the app behaves as if it has been uninstalled from the system and remains hidden from the launcher. (For developers, it issues PACKAGE_REMOVED or PACKAGE_ADDED intent.)
5. Uninstall. This operation completely or partially uninstalls the app from the system depending on whether you choose to retain its data. Note that data also include the signature of the app. So, if you chose to retain its data during the uninstallation but later wanted to install the same app with a different signature, the installation would fail.
App Manager's take on freezing
The term freeze denotes one of 2–4 operations/actions described above (i.e. suspend, disable or hide), depending on the app that the user is familiar with. In App Manager, instead of displaying all three actions separately in the app info tab (just think how much space would it take for, more or less, the same feature) or elsewhere, a single action, namely freeze, would be added, replacing the current disable action. In settings, an option would be added to configure how this action would behave. For compatibility reasons, the default behaviour would be disable.
👍37❤11🔥5
App Manager | CHANNEL
Freezing an app? Many of you have been written to me in the past regarding the freezing of an app in Android, and it also appears that the opinions regarding this keyword differ widely. So, let me explain to you what freezing means and why the opinions differ…
You can comment here: https://github.com/MuntashirAkon/AppManager/discussions/835
👍15
App Manager v3.0.1 Stable
- Display inferred mode of operation in the crash logs
- Handled the Internet permission in GrapheneOS
- Prevented closing multi-selection panel after starting an operation
- Replaced MD2 (Material Design 2) switches with M3 (Material 3) switches
- Fixed icon theming issues in Android 12
- [App Details page] Display failure message instead of crashing if a service cannot be launched from the Services tab
- [App Details page] Fixed crashes in the Shared Libs tab
- [Installer] Fixed a rare crash used to occur due to the accidental closing of the installer page
- [Main page] Fixed sorting when a profile is selected in the list options
- [Main page] Fixed displaying backup volume unavailable messages when
- [Profile page] Fixed crashes in the log viewer tab
- [Running Apps page] Fixed double scrollbars
- [Running Apps page] Fixed crashes in no-root mode while checking for
- [Scanner page] Fixed a rare crash used to occur when the activity is accidentally closed
Full Changelog: v3.0.0...v3.0.1
- Display inferred mode of operation in the crash logs
- Handled the Internet permission in GrapheneOS
- Prevented closing multi-selection panel after starting an operation
- Replaced MD2 (Material Design 2) switches with M3 (Material 3) switches
- Fixed icon theming issues in Android 12
- [App Details page] Display failure message instead of crashing if a service cannot be launched from the Services tab
- [App Details page] Fixed crashes in the Shared Libs tab
- [Installer] Fixed a rare crash used to occur due to the accidental closing of the installer page
- [Main page] Fixed sorting when a profile is selected in the list options
- [Main page] Fixed displaying backup volume unavailable messages when
/sdcard/AppManager was inaccessible or unavailable- [Profile page] Fixed crashes in the log viewer tab
- [Running Apps page] Fixed double scrollbars
- [Running Apps page] Fixed crashes in no-root mode while checking for
RUN_IN_BACKGROUND- [Scanner page] Fixed a rare crash used to occur when the activity is accidentally closed
Full Changelog: v3.0.0...v3.0.1
🔥30👍12❤10🎉2
App Manager v3.0.2 Stable
This release contains a number of bug fixes.
- Removed dark theme hacks for the WebView in the help page
- Fixed loading dynamic colours in the splash screen
- Fixed shortcut creation issues in some launchers
- Prevented a crash in the ADB mode which used to occur on attempting to fetch application data size
- Prevented a nasty crash used to occur when an activity is needed to be recreated.
Full Changelog: v3.0.1...v3.0.2
This release contains a number of bug fixes.
- Removed dark theme hacks for the WebView in the help page
- Fixed loading dynamic colours in the splash screen
- Fixed shortcut creation issues in some launchers
- Prevented a crash in the ADB mode which used to occur on attempting to fetch application data size
- Prevented a nasty crash used to occur when an activity is needed to be recreated.
Full Changelog: v3.0.1...v3.0.2
🔥28👍13🎉1
🔥30👍14❤9😁4😱1
App Manager is participating in Hacktoberfest 2022
Existing and new contributors are welcome to participate in this year's Hacktoberfest!
You can find the event details and rules in the official site here: https://hacktoberfest.com/
You can register here: https://hacktoberfest.com/auth/
Our rules
- Rules described in the contributing guidelines must be followed.
- Solve any issues marked with hacktoberfest. If you have a new idea, create an issue first. We shall decide if this should be part of this event or not.
- The PR must contain a new feature, or a major fix or feature improvement. Minor fixes and/or feature improvements may be merged, but they won't be part of the event. Minor fixes include fixing simple logical errors, UI, localisation or grammatical issues, and minor feature improvements include adding useless words/sentences in documentations or app strings, unimportant UI changes.
- Spammers will be blocked indefinitely from both the event and the projects.
Participating projects
This year, you will be able to contribute to a number of projects maintained by me:
1. https://github.com/MuntashirAkon/AppManager
2. https://github.com/MuntashirAkon/SetEdit
3. https://github.com/MuntashirAkon/BatteryChargeLimiter
4. https://github.com/MuntashirAkon/android-debloat-list
Note
In App Manager, translations are managed via Weblate. So, we cannot accept any PR containing translations, but in the other projects such PRs are accepted.
Take this moment to contribute to your favourite projects and get recognition at the same time!
GitHub discussion
Existing and new contributors are welcome to participate in this year's Hacktoberfest!
You can find the event details and rules in the official site here: https://hacktoberfest.com/
You can register here: https://hacktoberfest.com/auth/
Our rules
- Rules described in the contributing guidelines must be followed.
- Solve any issues marked with hacktoberfest. If you have a new idea, create an issue first. We shall decide if this should be part of this event or not.
- The PR must contain a new feature, or a major fix or feature improvement. Minor fixes and/or feature improvements may be merged, but they won't be part of the event. Minor fixes include fixing simple logical errors, UI, localisation or grammatical issues, and minor feature improvements include adding useless words/sentences in documentations or app strings, unimportant UI changes.
- Spammers will be blocked indefinitely from both the event and the projects.
Participating projects
This year, you will be able to contribute to a number of projects maintained by me:
1. https://github.com/MuntashirAkon/AppManager
2. https://github.com/MuntashirAkon/SetEdit
3. https://github.com/MuntashirAkon/BatteryChargeLimiter
4. https://github.com/MuntashirAkon/android-debloat-list
Note
In App Manager, translations are managed via Weblate. So, we cannot accept any PR containing translations, but in the other projects such PRs are accepted.
Take this moment to contribute to your favourite projects and get recognition at the same time!
GitHub discussion
👍43
CaptivePortalController_v1.0.0.apk
60.8 KB
Captive Portal Controller v1.0.0
Control how Android detects captive portal.
NOTE: In many OEM provided ROMs, it is NOT a privacy feature because these ROMs are able to bypass captive portal settings.
Features
- Enable/disable captive portal detection
- Set captive portal servers (with presets from GrapheneOS, Kuketz and Google)
- A quick setting tile to toggle captive portal detection
- Less than 100KB app as you don't need to use it frequently.
Control how Android detects captive portal.
NOTE: In many OEM provided ROMs, it is NOT a privacy feature because these ROMs are able to bypass captive portal settings.
Features
- Enable/disable captive portal detection
- Set captive portal servers (with presets from GrapheneOS, Kuketz and Google)
- A quick setting tile to toggle captive portal detection
- Less than 100KB app as you don't need to use it frequently.
👍35🔥5❤3👎1
App Manager | CHANNEL
CaptivePortalController_v1.0.0.apk
Why this app is needed?
Android performs connectivity checks for two purposes:
1. To check whether the device connected to the Internet
2. to handle captive portals.
Android does this by sending out request to a remote server that is supposed to be run all the time. This remote server, after receiving a request, generate a 204 message (i.e. empty message) which lets the device know that you’re connected to the Internet. This seems legit in plainsight. However, sending this message means the remote server receives your IP address and user agent, and this request is made all through the day! If this is not enough for you, this request is always sent to the remote server using your network, thereby, bypassing the VPN that you may have been using. And the best of all, this request is sent to our good(?) friend, Google. The well known big brother organisation with a lot of evil activities including but not limited to the military-led covert operations in the middle east, it appears, is capable of tracking you day and night via connectivity checks. Mullvad developers have requested an option to disable this check which is, of course, refused by Google.
This app attempts to provide a solution by offering you a few alternative options:
1. Disable connectivity checks completely (also disables captive portal detection as a byproduct)
2. Keep connectivity checks enabled but with different providers
We suggest that you do both for maximum safety, that is,
- Disable captive portal detection (enable it only when you need via the Quick Setting tile or the app)
- Configure four servers (only one server before Android Oreo/8)
We have also supplied presets (including Google’s in case you want to go back to it). To use them, start typing
This app is mostly feature-complete. However, I might still have to work on a thing or two.
References
1. https://mullvad.net/en/blog/2022/10/10/android-leaks-connectivity-check-traffic/
2. https://grapheneos.org/faq#default-connections
3. https://issuetracker.google.com/issues/250529027
4. https://www.newsweek.com/assange-google-not-what-it-seems-279447
Android performs connectivity checks for two purposes:
1. To check whether the device connected to the Internet
2. to handle captive portals.
Android does this by sending out request to a remote server that is supposed to be run all the time. This remote server, after receiving a request, generate a 204 message (i.e. empty message) which lets the device know that you’re connected to the Internet. This seems legit in plainsight. However, sending this message means the remote server receives your IP address and user agent, and this request is made all through the day! If this is not enough for you, this request is always sent to the remote server using your network, thereby, bypassing the VPN that you may have been using. And the best of all, this request is sent to our good(?) friend, Google. The well known big brother organisation with a lot of evil activities including but not limited to the military-led covert operations in the middle east, it appears, is capable of tracking you day and night via connectivity checks. Mullvad developers have requested an option to disable this check which is, of course, refused by Google.
This app attempts to provide a solution by offering you a few alternative options:
1. Disable connectivity checks completely (also disables captive portal detection as a byproduct)
2. Keep connectivity checks enabled but with different providers
We suggest that you do both for maximum safety, that is,
- Disable captive portal detection (enable it only when you need via the Quick Setting tile or the app)
- Configure four servers (only one server before Android Oreo/8)
We have also supplied presets (including Google’s in case you want to go back to it). To use them, start typing
http in the URL fields in the app.This app is mostly feature-complete. However, I might still have to work on a thing or two.
References
1. https://mullvad.net/en/blog/2022/10/10/android-leaks-connectivity-check-traffic/
2. https://grapheneos.org/faq#default-connections
3. https://issuetracker.google.com/issues/250529027
4. https://www.newsweek.com/assange-google-not-what-it-seems-279447
👍33❤16😱10👎4
App Manager | CHANNEL
CaptivePortalController_v1.0.0.apk
CaptivePortalController_v1.1.0.apk
65.6 KB
Captive Portal Controller v1.1.0
- UI improvements
- Option to set user agent (Android 8+)
- Fixed support for Android 7.1 and earlier
- Improved documentations
- Updated target SDK to 33
Full Changelog: https://github.com/MuntashirAkon/CaptivePortalController/compare/v1.0.1...v1.1.0
- UI improvements
- Option to set user agent (Android 8+)
- Fixed support for Android 7.1 and earlier
- Improved documentations
- Updated target SDK to 33
Full Changelog: https://github.com/MuntashirAkon/CaptivePortalController/compare/v1.0.1...v1.1.0
👍43👎3🔥2
App Manager v3.0.3 Stable
This release contains a number of fixes for the backup/restore feature.
- Backup metadata version updated to 4
- Use 128 bit tag size for AES encryption
- Fixed encryption/decryption for AES 128
- Fixed an issue with saving the PGP encrypted files
- Fixed crashing if a storage media does not have a label
Full Changelog: https://github.com/MuntashirAkon/AppManager/compare/v3.0.2...v3.0.3
This release contains a number of fixes for the backup/restore feature.
- Backup metadata version updated to 4
- Use 128 bit tag size for AES encryption
- Fixed encryption/decryption for AES 128
- Fixed an issue with saving the PGP encrypted files
- Fixed crashing if a storage media does not have a label
Full Changelog: https://github.com/MuntashirAkon/AppManager/compare/v3.0.2...v3.0.3
🔥23❤6👍6👎2🤩2
Great! Telegram has put my username (@MuntashirAkon) at its auction page without a warning. So, if you receive any random requests for money or crypto from that username, know that it's because of how greedy Pavel Durov has become (or he was always like this?). When he announced this scamming platform, a record number of people disliked it and what he did afterwards is something you don't expect even from the Zuck himself: He disabled reactions on his page.
😢157😱32👍21👎11😁7🎉2🔥1
#unstable #alpha #release
App Manager v3.1.0-alpha02
New features
- Added support for v3.1 signing scheme
- Export APKS using the new APKS specification. This is still in pre-alpha stage.
- New language: Romanian
- Replaced enable/disable with freeze/unfreeze
Freeze/unfreeze can be customised to disable, suspend or hide the applications instead of only disabling it. The colour codes used for disabling is used for freezing.
- Added freeze/unfreeze toggle shortcut in the App Info tab
Long clicking on the freeze or unfreeze buttons in the App Info tab opens a dialog where how the shortcut shall work apart from freezing/unfreezing can be configured. If a shortcut already exists, the existing shortcut shall be updated.
It offers the following options:
1. Open application after unfreezing it
2. Open application (requires 1 to be enabled) but without an entry in Recents
3. Refreeze the application when the phone is locked.
Backup
- Backup metadata version updated to 4
- Use 128 bit tag size for AES encryption
- Fixed encryption/decryption for AES 128
- Fixed a crash if no backup is selected but restore is clicked
- Fixed an issue with saving the PGP encrypted files
- Fixed crashing if a storage media does not have a label
App Details page
- Display invalid native libraries in the Shared libs tab
- Replaced block/unblock button with material switch
- Display failure message instead of crashing if a service cannot be launched from the Services tab
- Fixed a crash on specifying an invalid icon resource in the edit shortcut dialog
- Fixed crashes in the Shared Libs tab
- Fixed shortcut creation issues in some launchers
- Prevented a crash in the ADB mode which used to occur on attempting to fetch application data size
Installer page
- Ensured all the installation confirmation notifications are different in no-root mode
- Fixed a rare crash used to occur due to the accidental closing of the installer page
Main page
- Fixed sorting when a profile is selected in the list options
- Fixed displaying backup volume unavailable messages when
Running Apps page
- Added searching by package name
- Enabled advanced searching
- Fixed double scrollbars
- Fixed crashes in no-root mode while checking for
UI
- Migrated to Material 3-style preferences
- Prevented closing multi-selection panel after starting an operation
- Replaced MD2 (Material Design 2) switches with M3 (Material 3) switches
- Fixed icon theming issues in Android 12
- Fixed loading dynamic colours in the splash screen
- Fixed applying the pure black theme on some devices
App Manager v3.1.0-alpha02
New features
- Added support for v3.1 signing scheme
- Export APKS using the new APKS specification. This is still in pre-alpha stage.
- New language: Romanian
- Replaced enable/disable with freeze/unfreeze
Freeze/unfreeze can be customised to disable, suspend or hide the applications instead of only disabling it. The colour codes used for disabling is used for freezing.
- Added freeze/unfreeze toggle shortcut in the App Info tab
Long clicking on the freeze or unfreeze buttons in the App Info tab opens a dialog where how the shortcut shall work apart from freezing/unfreezing can be configured. If a shortcut already exists, the existing shortcut shall be updated.
It offers the following options:
1. Open application after unfreezing it
2. Open application (requires 1 to be enabled) but without an entry in Recents
3. Refreeze the application when the phone is locked.
Backup
- Backup metadata version updated to 4
- Use 128 bit tag size for AES encryption
- Fixed encryption/decryption for AES 128
- Fixed a crash if no backup is selected but restore is clicked
- Fixed an issue with saving the PGP encrypted files
- Fixed crashing if a storage media does not have a label
App Details page
- Display invalid native libraries in the Shared libs tab
- Replaced block/unblock button with material switch
- Display failure message instead of crashing if a service cannot be launched from the Services tab
- Fixed a crash on specifying an invalid icon resource in the edit shortcut dialog
- Fixed crashes in the Shared Libs tab
- Fixed shortcut creation issues in some launchers
- Prevented a crash in the ADB mode which used to occur on attempting to fetch application data size
Installer page
- Ensured all the installation confirmation notifications are different in no-root mode
- Fixed a rare crash used to occur due to the accidental closing of the installer page
Main page
- Fixed sorting when a profile is selected in the list options
- Fixed displaying backup volume unavailable messages when
/sdcard/AppManager was inaccessible or unavailableRunning Apps page
- Added searching by package name
- Enabled advanced searching
- Fixed double scrollbars
- Fixed crashes in no-root mode while checking for
RUN_IN_BACKGROUNDUI
- Migrated to Material 3-style preferences
- Prevented closing multi-selection panel after starting an operation
- Replaced MD2 (Material Design 2) switches with M3 (Material 3) switches
- Fixed icon theming issues in Android 12
- Fixed loading dynamic colours in the splash screen
- Fixed applying the pure black theme on some devices
👍20❤5🔥2
Others
- Check whether Binder transaction is supported in root mode before initiating a connection
Certain superuser implementations did not enable communications through Binder (that, is binder transactions) from user applications. A check has been added to ensure that the currently used superuser supports such communications before attempting to create a remote service.
- Display inferred mode of operation in the crash logs
- Handle multiple users including work profile in no-root mode
Apps in the work profile can be opened in the App Details page. They can also be launched, uninstalled, and the corresponding settings page can also be opened in no-root mode.
- Fall back to ADB if root mode is not supported
If App Manager cannot connect using root, root itself is used to start ADB over TCP and connect to it. This is also useful for certain rooting solutions which do not support Binder transactions.
- Fall back to root mode while reading the APK file
Some applications erroneously provide private files that aren't accessible to any installer other than the system ones. Therefore, root mode is used to read those files if available.
- Handled the Internet permission in Graphene OS
- Removed dark theme hacks for the WebView in the help page
- Replaced SLF4J dependency with Android compatible classes
- Updated trackers and libraries
- Prevented a nasty crash used to occur when an activity is needed to be recreated
- [Profile page] Fixed crashes in the log viewer tab
- [Scanner page] Fixed a rare crash used to occur when the activity is accidentally closed
Full Changelog: https://github.com/MuntashirAkon/AppManager/compare/v3.1.0-alpha01...v3.1.0-alpha02
- Check whether Binder transaction is supported in root mode before initiating a connection
Certain superuser implementations did not enable communications through Binder (that, is binder transactions) from user applications. A check has been added to ensure that the currently used superuser supports such communications before attempting to create a remote service.
- Display inferred mode of operation in the crash logs
- Handle multiple users including work profile in no-root mode
Apps in the work profile can be opened in the App Details page. They can also be launched, uninstalled, and the corresponding settings page can also be opened in no-root mode.
- Fall back to ADB if root mode is not supported
If App Manager cannot connect using root, root itself is used to start ADB over TCP and connect to it. This is also useful for certain rooting solutions which do not support Binder transactions.
- Fall back to root mode while reading the APK file
Some applications erroneously provide private files that aren't accessible to any installer other than the system ones. Therefore, root mode is used to read those files if available.
- Handled the Internet permission in Graphene OS
- Removed dark theme hacks for the WebView in the help page
- Replaced SLF4J dependency with Android compatible classes
- Updated trackers and libraries
- Prevented a nasty crash used to occur when an activity is needed to be recreated
- [Profile page] Fixed crashes in the log viewer tab
- [Scanner page] Fixed a rare crash used to occur when the activity is accidentally closed
Full Changelog: https://github.com/MuntashirAkon/AppManager/compare/v3.1.0-alpha01...v3.1.0-alpha02
🔥24👍10❤4😱4
AppManager_v3.1.0-alpha02.apks
12.5 MB
❤36👍10🔥5😱2😁1