[Xposed Framework Modules] Tungstwenty:
Xposed module: App Settings v1.10

What it is

This is an Xposed module that allows changing generic settings on a per-app basis.

"Generic settings" means

settings that are global to all applications

, such as: perceived DPI, rotation behavior, fullscreen, etc.; full list is below.

These are settings that can in principle be applied to all packages, even if for some it might not produce any effects.

Not to be confused with app-specific settings. If it's something that only app Y or Z needs changing, chances are it won't belong in this module.

What the mod CAN do

Here's the list of settings that can be defined for each target package:

- DPI: Changes the DPI used by this app both when loading resources (some might be DPI-specific) and also when rendering them.

- Font Scale: Scales the font up or down, similarly to the system-wide "Font Size" setting.

- Screen dimensions: Affects the resources loaded by the app in case it bundles different ones for different screen sizes; use the "List Res." button to get some hints on the kind of alternatives the app might have for different resolutions.

- xlarge qualifier for resources: also affects alternate resources used by the apps (tipically for tablets / devices with big screens); see previous item.

-Apply res to widgets: normally, resources are only manipulated when being loaded by the application itself. If this is activated, they will also be manipulated when loaded by other apps, which is the typical situation when a Launcher presents widgets from other apps.

- Locale: the language used by the app for loading resources, formatting numbers and dates, etc.; you can use this for apps that do include translations but don't give you an option of using a different language than your global one.

- Fullscreen: you can force an app to always use fullscreen (hiding the

statusbar only

, not the navigation bar for devices that have it) or never use it; on KitKat Immersive mode can also be activated.

- No title: hides the title bar, gaining more space for the actual contents. Note that many

apps might crash

if they're relying on some elements of the titlebar to be there.

- Keep screen on: If set, the screen won't dim or turn off after the inactivity period whenever this app is on the foreground. Remember not to put the device on your pocket with the app active.

- Show when locked: Display this app's screen on top of the lockscreen, without requiring e.g. the PIN to be entered (dangerous). Note that you'll have to find a way (somewhere else) to open the app from the lockscreen, depending on the kind of app.

- Resident in memory: If set, the system will try much harder to keep the app in memory even when you leave it. It might make the app more responsive when reopening but will also

consume more RAM

, possibly slowing down the overall system.

- No fullscreen IME: prevents the keyboard from taking up the entire fullscreen when in landscape mode.

- Orientation: Override the orientation settings build into the app. You can force "normal behavior" (rotate according to the device settings, even if the developer hardcoded a specific orientation), "always portrait", "always landscape" or "force auto" (use the sensors even if the auto-rotate system setting is off). Additional options exist for forced reversing the portrait or landscape orientations, use the sensor so they can be inverted by tilting the device, 4-way rotation, and forced rotation but respecting the user setting (locked / auto-rotate).

- Insistent notifications: If active, the sounds used by any of the app's raised notifications will loop

endlessly

. Danger of depleting the battery (and annoying crowds) if you're not around when it starts playing the sound.

- No big notifications: Prevent notifications to have an alternate layout for the "expanded" mode; it will always be collapsed and can't even be expanded manually

- Ongoing notifications: Force or prevent notifications from the app to be marked as Ongoing (non dismissable)

- Notifications priority: This is the relative importance of the notifications and, depending on the ROM, influence the visibility of their icons on the statusbar, their order on the list, etc.

- Show in recents: You can prevent the app from showing on the Recents list, or force it to appear.

- Mute audio: Prevents all sound from being played from the app. If videos are played, they will be muted. (this doesn't work for all apps, due to technical limitations on the system)

- Force legacy menu button: For devices that don't have a physical menu button, menu entries will usually appear on the far right of the Action Bar. With this option, the 3-dot button will be displayed on the navbar and the menu options will appear there.

- Revoke permissions: selectively block permissions requested by the app. Needless to say, depending on the permission and the app, it's very

likely that it will start failing

; don't expect revoking INTERNET or READ_CONTACTS and having the apps continuing to work every time - most of them will fail unless the developer anticipated this kind of permission denials

Some of the features that help you manage the settings for each app:

Search / filter apps

- by name or package

- by type (user/system)

- by state (enabled/disabled)

- by applied settings: global state, overridden or unchanged state for each setting

Shortcuts for app actions on the main list or on the individual settings screen

- launch app (main launcher activity)

- go to system settings screen (uninstall, clear data, ...)

- Play Store link (if applicable)

Display list of recent apps and jump directly to their configuration

The app can be killed when saving settings, so they can take effect immediately after relaunch instead of requiring a reboot.

What the mod CAN'T / WON'T do

The settings you can define for each app won't add functionality that simply isn't there, such as:

- adding tablet / large screen layouts

- using languages for which no resources are included in the app

- display "properly" in portrait or landscape mode

- operate flawlessly on top of the lockscreen

- keep working as expected (whatever that means to you) even after you revoke permissions

Not only these would be not possible to implement in an app-independent way, it's also beyond the scope of this particular module.

If you're familiar with the Xposed Framework, you're probably aware that lots of things can be tweaked or added to specific apps.

However, unless it's:

- generic behavior that can be applied to most apps

- relatively easy to implement

then don't bother requesting App Settings to provide it.

If it does obey these 2 conditions, then by all means suggest it (preferably with code contributions / pull requests).

Installation

Requirements:

- Xposed Framework 2.2 or newer; 2.6 or newer starting with AppSettings 1.9

- ICS (4.0.3) or newer (up to 4.4); this is not only a requirement for the framework, but also for this module due to the hooked APIs

Download:

The installation can be performed

from within Xposed Framework

by browsing the repository and finding the "App Settings" entry. Any updates will also appear there.

Alternatively, the repository entry can be browsed directly at http://repo.xposed.info/module/de.robv.android.xposed.mods.appsettings

Usage of this thread

This thread serves primarily to publish

updates

to the module,

report bugs

and suggest or discuss

new features

(user or developer-wise).

You can also use it to share and discuss your

experiences with tweaking specific apps

(e.g. resources settings, revoked permissions, etc.) - but I must warn that

you should not expect feedback from me

on that matter.

Quite frankly, I'm not that much of a smartphone heavy user, and I'm not willing to install loads of apps on my device in order to experiment and achieve ideal configurations for *you* to use. That's what the community is here for, though :) so feel free to discuss this on the thread.

Screenshots

Some images showing: main apps list; settings panel for an individual app; list of resources bundled in an app; editing permissions to revoke; menu with actions for an app; filtering by settings; filtering by permissions used.

Development

Authors: [MENTION=4419114]rovo89[/MENTION] and [MENTION=4322181]Tungstwenty[/MENTION]

Sources: https://github.com/rovo89/XposedAppSettings

History: The foundations of this module were created by [MENTION=4419114]rovo89[/MENTION] as a hidden feature within his Tweakbox module, which was the first daily-use mod taking advantage of the (then new) Xposed framework and somewhat of a showcase for it. By directly editing the xml settings file, it was possible to change the dpi, screen dimensions and language for an app's loaded resources.

Eventually it got promoted to its own standalone mod once a minimal UI was built to edit the configuration and more and more settings were added. It was promoted and discussed on [MENTION=2178960]pulser_g2[/MENTION]'s Making Stock Custom ROMs Defunct thread and the repository he was kind enough to setup and administer some time ago.

Since it's been pretty stable for a while - both in robustness and in expected update frequency - and Xposed Framework now has repository functionality, it has come the time to create a dedicated thread for this and also bump the version to 1.x with the latest added features.