# App Details Page

App Details page consists of 11 (eleven) tabs. It basically describes almost every bit of information an app can have including all attributes from app manifest, permissions, app operations, signing info, etc.

Table of Contents

# Colour Codes

List of background colours used in this page and their meaning:

  • Red (day) or dark red (night) - Any app op or permission that has the dangerous flag is marked as red. Components that are blocked within App Manager are also marked as red
  • Light red (day) or very dark red (night) - Components that are disabled outside App Manager have these colors. It should be noted that a component that is marked as disabled does not always mean that it is disabled by the user: It could be disabled by the system as well or marked as disabled in the app manifest. Also, all components of a disabled app are considered disabled by the system (and by App Manager as well)
  • Vivid orange (day) or very dark orange (night) - Ad or tracker components
  • Soft magenta (day) or very dark violet (night) - Currently running services

# App Info Tab

App Info tab contains general information about an app. It also lists many actions that can be performed within this tab. A complete description is given below:

# General Information

The list below is in the same order as listed in the App Info tab.

  • App Icon. The application icon, if an app doesn't have an icon, the system default icon is displayed.
  • App Label. The application label or application name.
  • Version. Application version is divided into two parts. The first part is called version name, the format of this part varies but it often consists of multiple integers separated by dots. The second part is called version code and it is closed under first brackets. Version code is an integer which is usually used to differentiate between app versions (as version name can often be unreadable by a machine). In general, new version of an app has higher version code than the old ones. For instance, if 123 and 125 are two version codes of an app, we can say that the latter is more updated than the former because the version code of the latter is higher. For applications that depend on platforms (mobile, tabs, desktops, etc.), these version numbers can be misleading as they use prefixes for each platform.
  • Tags. (Also known as tag clouds) Tags include the basic, concise and most useful info of an app. Tags contain tracker info (i.e., number of tracker components), app type (user app or system app and whether the app is an updated version of the system app or if the app is installed systemless-ly using Magisk), running (i.e. one or more services of the app is running in the background), split APK info (i.e., number of splits), debuggable (the app is a debug version), test only (the app is a test only app), large heap (the app has requested a large heap size), stopped (the app is force stopped), disabled (the app is disabled), KeyStore (the app has items in the Android KeyStore) and no code (the app doesn't have any code associated with it). The importance of including test only and debuggable is that app with these properties can do additional tasks or these apps can be run-as without root which can cause potential security problems if these apps store any private information. large heap denotes that the app will be allocated a higher amount of memory (RAM) if needed. While this may not be harmful for most cases, any suspicious apps requesting large heap should be taken seriously.
  • Horizontal Action Panel. This is a action panel containing various actions regarding the app. See below for a complete list of actions available there.
  • Paths & Directories. Contains various information regarding application paths including app directory (where the APK files are stored), data directories (internal, device protected and externals), split APK directories (along with the split names), and native JNI library (if present). JNI libraries are used to invoke native codes usually written in C/C++. Use of native library can make the app run faster or help an app use third-party libraries written using languages other than Java like in most games. You can also open these directories using your favourite file managers (provided they support it and have necessary permissions) by clicking on the launch icon on the right-hand side of each item.
  • Data Usage Since Last Boot. A rather self explanatory option. But beware that due to some issues, the results might often be misleading and simply wrong. This part remains hidden if Usage Access permission is not granted in newer devices.
  • Storage & Cache. Displays information regarding the size of the app (APK files), data and cache. In older devices, size of external data, cache, media and OBB folders are also displayed. This part remains hidden if Usage Access permission is not granted in newer devices.
  • More Info. Displays other information such as
    • SDK. Displays information related to the Android SDK. There are two (one in old devices) values: Max denotes the target SDK and Min denotes the minimum SDK (the latter is not available in old devices). It is best practice to use apps with maximum SDK that the platform currently supports. SDK is also known as API Level. See also: Android Version History (opens new window)
    • Flags. The application flags used at the time of building the app. For a complete list of flags and what they do, visit the official documentation (opens new window).
    • Date Installed. The date when the app was first installed.
    • Date Updated. The date when the app was last updated. This is the same as Date Installed if the app hasn't been updated.
    • Installer App. The app that installed the app. Not all app supply the information used by the package manager to register the installer app. Therefore, this value should not be take for granted.
    • User ID. The unique user ID set by the Android system to the app. For shared applications, same user ID is assigned to multiple applications that have the same Shared User ID.
    • Shared User ID. Applicable for applications that are shared together. Although it says ID, this is actually a string value. The shared application must have the same signatures.
    • Main Activity. The main entry point to the app. This is only visible if the app has activities and any of those are openable from the Launcher. There's also launch button on the right-hand side which can be used to launch this activity.

# Horizontal Action Panel

Horizontal Action Panel, as described in the previous section, consists of various app-related actions, such as —

  • Launch. Application that has a launcher activity can be launched using this button.
  • Disable. Disable an app. This button is not displayed for already disabled apps or to users who do not have root or ADB. If you disable an app, the app will not be displayed in your Launcher app. Shortcuts for the app will also be removed. If you disable a user app, you can only enable them via App Manager or any other tool that supports it. There isn't any option in Android Settings to enable a disabled user app.
  • Uninstall. Uninstall an app.
  • Enable. Enable an app. This button is not displayed for already enabled apps or to users who do not have root or ADB.
  • Force Stop. Force-stop an app. When you force stop an app, the app will not be able to run in background unless you explicitly open it first. However, this is not always true.
  • Clear Data. Clear data from an app. This includes any information stored in the internal and often the external directories, including accounts (if set by the app), cache, etc. Clearing data from App Manager, for example, removes all the rules (the blocking is not removed though) saved within the app. Which is why you should always take backups of your rules. This button is not displayed to users who do not have root or ADB.
  • Clear Cache. Clear app cache only. There is not any Android-way to clear app cache. Therefore, it needs root permission to clear cache from the app's internal storage.
  • Install. Install an APK opened using any third-party app. This button is only displayed for an external APK that hasn't been installed.
  • What's New. This button is displayed for an APK that has higher version code than the installed one. Clicking on this button displays a dialog consisting of differences in a version control manner. The information it displays include version, trackers, permissions, components, signatures (checksum changes), features, shared libraries and SDK.
  • Update. Displayed for an app that has a higher version code than the installed app.
  • Reinstall. Displayed for an app that has the same version code as the installed app.
  • Downgrade. Displayed for an app that has a lower version code than the installed app.
  • Manifest. Clicking on this button displays the app's manifest file in a separate page. The manifest file can be wrapped or unwrapped using the corresponding toggle button (on the top-right side) or can be saved to you shared storage using the save button.
  • Scanner. Clicking on this button displays the app's tracker and library information. At first, it scans the app to extract a list of classes. Then the class list is matched with a number of signatures. After that, a scan summary is displayed. See also: Scanner page
  • Shared Prefs. Clicking on this button displays a list of shared preferences used by the app. Clicking on a preference item in the list opens the Shared Preferences Editor page. This option is only visible to the root users.
  • Databases. Clicking on this button displays a list of databases used by the app. This needs more improvements and a database editor which might be added in future. This option is only visible to the root users.
  • Aurora. Opens the app in Aurora Droid. The option is only visible if Aurora Droid is installed.
  • F-Droid. Opens the app in F-Droid. This option is only visible if F-Droid is installed and Aurora Droid is not installed.
  • Store. Opens the app in Aurora Store. The option is only visible if Aurora Store is installed.

# Options Menu

Options menu is located in the top-right corner of the page. A complete description of the options present there are given below:

  • Share. Share button can be used to share the APK file or APKS file (if the app is has multiple splits) can be imported into SAI (opens new window). You can share it with your favourite file manager to save the file in your shared storage.
  • Refresh. Refreshes the App Info tab.
  • View in Settings. Opens the app in Android Settings.
  • Backup/Restore. Opens the backup/restore dialog.
  • Export Blocking Rules. Export rules configured for this app within App Manager.
  • Open in Termux. Opens the app in Termux. This actually runs su - user_id where user_id denotes the app's kernel user ID (described in the General Information section). This option is only visible to the root users. See Termux section below to learn how to configure Termux to run commands from third-party applications.
  • Run in Termux. Open the app using run-as package_name in Termux. This is only applicable for debuggable app and works for non-root users as well. See Termux section below to learn how to configure Termux to run commands from third-party applications.
  • Extract Icon. Extract and save the app's icon in your desired location.

# Termux

By default, Termux does not allow running commands from third-party applications. To enable this option, you have to add allow-external-apps=true in ~/.termux/termux.properties and make sure that you are running Termux v0.96 or later.

Info

Enabling this option does not weaken your Termux' security. The third-party apps still need to request the user to allow running arbitrary commands in Termux like any other dangerous permissions.

# Component Tabs

Activities, Services, Receivers (originally broadcast receivers) and Providers (originally Content Providers) are together called the application components. This is because they share similar features in many ways. For example, they all have a name and a label. Application components are the building blocks of any application, and most of these have to declared in the application manifest. Application manifest is a file where application specific metadata are stored. The Android operating system learns what to do with an app by reading the metadata. Colours used in these tabs are explained above. You also have the ability to sort the list of components to display blocked or tracker components on top of the list using the Sort option in the overflow menu.

Table of Contents

# Activities

Activities are windows or pages that you can browse (for instance Main page and App Details page are two separate activities). In other words, an activity is a user interface (UI) component. Each activity can have multiple UI components known as widgets or fragments, and similarly, each of these latter components can have multiple of them nested or on top of each other. But an activity is a master component: There cannot be two nested activities. An application author can also choose to open external files within an activity using a method called intent filters. When you try to open a file using your file manager, either your file manager or system scans for intent filters to decide which activities can open that particular file and offers you to open the file with these activities (therefore, it is nothing to do with the application itself). There are other intent filters as well.

Activities which are exportable can usually be opened by any third-party apps (some activities require permissions, if that is the case, only an app having those permissions can open them). In the Activities tab, the name of the activity (on top of each list item) is actually a button. It is enabled for the exportable activities and disabled for others (root users can open any activities). You can click on the button to open the activity directly in App Manager. You can also open the Interceptor page by long clicking on an activity. Currently it only works for exportable activities.

Notice

If you are not able to open any activity, chances are it has certain dependencies which are not met, e.g., you cannot open App Details Activity because it requires that you at least supply a package name. These dependencies cannot always be inferred programmatically. Therefore, you cannot open them using App Manager.

You can also create shortcut for these exportable activities (using the dedicated button), and if you want, you can edit the shortcut as well using the Edit Shortcut button.

Caution

If you uninstall App Manager, the shortcuts created by App Manager will be lost.

# Services

Unlike activities which users can see, Services handle background tasks. If you're, for example, downloading a video from the internet using your phone's Internet browser, the Internet browser is using a background service to download the content.

When you close an activity, it usually gets destroyed immediately (depending on many factors such as how much free memory your phone has). But services can be run for indefinite periods if desired. If more services are running in background, you phone will get slower due to shortage of memory and/or processing power, and your phone's battery can be drained more quickly. Newer Android versions have a battery optimisation feature enabled by default for all apps. With this feature enabled, the system can randomly terminate any service.

By the way, both activities and services are run in the same looper called the main looper (opens new window), which means the services are not really run in the background. It's the application authors job to ensure that. How do application communicate with services? They use broadcast receivers.

# Receivers

Receivers (also called broadcast receivers) can be used to trigger execution of certain tasks for certain events. These components are called broadcast receivers because they are executed as soon as a broadcast message is received. These broadcast messages are sent using a method called intent. Intent is a special feature for Android which can be used to open applications, activities, services and send broadcast messages. Therefore, like activities, broadcast receivers use intent filters to receive only the desired broadcast message(s). Broadcast messages can be sent by either system or the app itself. When a broadcast message is sent, the corresponding receivers are awaken by the system so that they can execute tasks. For example, if you have low memory, your phone may freeze or experience lags for a moment after you enable mobile data or connect to the Wifi. Ever wondered why? This is because broadcast receivers that can receive android.net.conn.CONNECTIVITY_CHANGE are awaken by the system as soon as you enable data connection. Since many apps use this intent filter, all of these apps are awaken almost immediately by the system which causes the freeze or lags. That being said, receivers can be used for inter-process communication (IPC), i.e., it helps you communicate between different apps (provided you have the necessary permissions) or even different components of a single app.

# Providers

Providers (also called content providers) are used for data management. For example, when you save an apk file or export rules in App Manager, it uses a content provider called androidx.core.content.FileProvider to save the APK or export the rules. There are other content providers or even custom ones to manage various content-related tasks such as database management, tracking, searching, etc. Each content provider has a field called Authority which is unique to that particular app in the entire Android eco-system just like the package name.

# Additional Features for Rooted Phones

Unlike non-root users who are mostly spectators in these tabs, root users can perform various operations.

# Blocking Components

On the right-most side of each component item, there is a “block” icon (which becomes a “unblock/restore” icon when the component is being blocked). This icon (actually, a button) can be used to toggle the blocking status of that particular component. If you do not have Global Component Blocking enabled or haven't applied blocking for the app before, you have to apply the changes using the Apply rules option in three-dots menu. You can also remove already applied rules using the same option (which would be read as Remove rules this time).

See also: FAQ: App Components

# Blocking Trackers

You can disable tracker components using the Block tracker option in the three-dots menu. All tracker components will be blocked regardless of the tab you're currently in.

Info

Tracker components are a subset of app components. Therefore, they are blocked using the same method used for blocking any other components.

See also:

# Permission Tabs

App Ops, Uses Permissions and Permissions tabs are related to permissions. In Android communication between apps or processes which do not have the same identity (known as shared id) often require permission(s). These permissions are managed by the permission controller. Some permissions are considered normal permissions which are granted automatically if they appear in the application manifest, but dangerous and development permissions require confirmation from the user. Colours used in these tabs are explained above.

Table of Contents

# App Ops

App Ops stands for Application Operations. Since Android 4.3, App Ops are used by Android system to control most of the application permissions. Each app op has a unique number associated with them which are closed inside first brackets in the App Ops tab. They also have private and optionally a public name. Some app ops are associated with permissions as well. The dangerousness of an app op is decided based on the associated permission, and other informations such as flags, permission name, permission description, package name, group are taken from the associated permission. Other information may include the following:

  • Mode. It describes the current authorisation status which can be allow, deny (a rather misnomer, it simply means error), ignore (it actually means deny), default (inferred from a list of defaults set internally by the vendor), foreground (in newer Androids, it means the app op can only be used when the app is running in foreground), and some custom modes set by the vendors (MIUI uses ask and other modes with just numbers without any associated names).
  • Duration. The amount of time this app op has been used (there can be negative durations whose use cases are currently not known to me).
  • Accept Time. The last time the app op was accepted.
  • Reject Time. The last time the app op was rejected.

Info

Contents of this tab are only visible to the root and ADB users.

There is a toggle button next to each app op item which can be used to allow or deny (ignore) the app op. You can also reset your changes using the Reset to default option or deny all dangerous app ops using the corresponding option in the menu. You can also sort them in ascending order by app op names and the associated unique numbers (or values). You can also list the denied app ops first using the corresponding sorting option.

WARNING

Denying an app op may cause the app to misbehave. Use the reset to default option if that is the case.

See also: Technical Info: App Ops

# Uses Permissions

Uses Permissions are the permissions used by the application. This is named so because they are declared in the manifest using uses-permission tags. Informations such as flags, permission name, permission description, package name, group are taken from the associated permission.

Root and ADB users can grant or revoke the dangerous and development permissions using the toggle button on the right side of each permission item. They can also revoke dangerous permissions all at once using the corresponding option in the menu. Only these two types of permissions can be revoked because Android doesn't allow modifying normal permissions (which most of them are). The only alternative is to edit the app manifest and remove these permissions from there.

Info

Since dangerous permissions are revoked by default by the system, revoking all dangerous permissions is the same as resetting all permissions.

Notice

Permissions cannot be changed for apps targeting API 23 or earlier. Therefore, permission toggles are disabled for such apps.

Users can sort the permissions by permission name (in ascending order) or choose to display denied or dangerous permissions at first using the corresponding options in the menu.

# Permissions

Permissions are usually custom permissions defined by the app itself. It could contain regular permissions as well, mostly in old applications. Here's a complete description of each item that is displayed there:

  • Name. Each permission has a unique name like android.permission.INTERNET but multiple app can request the permission.
  • Icon. Each permission can have a custom icon. The other permission tabs do not have any icon because they do not contain any icon in the app manifest.
  • Description. This optional field describes the permission. If there isn't any description associated with the permission, the field is not displayed.
  • Flags. (Uses ⚑ symbol or Protection Level name) This describes various permission flags such as normal, development, dangerous, instant, granted, revoked, signature, privileged, etc.
  • Package Name. Denotes the package name associated with the permission, i.e., the package that defined the permission.
  • Group. The group name associated with the permission (if any). Newer Androids do not seem to use group names which is why you'll usually see android.permission-group.UNDEFINED or no group name at all.

# Signatures Tab

Signatures are actually called signing info. An application is signed by one or more singing certificates by the application developers before publishing it. The integrity of an application (whether the app is from the actual developer and isn't modified by other people) can be checked using the signing info; because when an app is modified by a third-party unauthorised person, the app cannot be signed using the original certificate(s) again because the signing info are kept private by the actual developer. How do you verify these signatures? Using checksums. Checksums are generated from the certificates themselves. If the developer supplies the checksums, you can match the checksums using the different checksums generated in the Signatures tab. For example, if you have downloaded App Manager from Github, Telegram Channel or IzzyOnDroid's repo, you can verify whether the app is actually released by me by simply matching the following SHA256 checksum with the one displayed in this tab:

320c0c0fe8cef873f2b554cb88c837f1512589dcced50c5b25c43c04596760ab
1

There are three types of checksums displayed there: MD5, SHA1 and SHA256.

Caution

It is recommended that you verify signing info using only SHA256 checksums or all three of them. DO NOT rely on MD5 or SHA1 checksums only as they are known to generate the same results for multiple certificates.

# Other Tabs

Other tabs list android manifest components such as features, configurations, shared libraries, and signatures. A complete description about these tabs will be available soon.

Last Updated: 1/1/2021, 3:56:06 PM