Add REQUEST_IGNORE_BATTERY_OPTIMIZATIONS android permission #566
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change adds the REQUEST_IGNORE_BATTERY_OPTIMIZATIONS permission, which is useful for preventing the app from being killed by Android Doze.
Android Doze was introduced in Android 6.0, and will kill background apps that perform network activity outside set intervals (e.g meterpreter).
Enabling this permission allows us to automatically request (however user interaction is required) that the app ignore these battery optimisations and run freely in the background.
Verification
meterpreter > activity_start 'intent:package:com.metasploit.stage#Intent;action=android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS;end'
adb shell dumpsys deviceidle force-idle
, the session should die without this change or if the battery optimization request was denied.adb shell dumpsys deviceidle unforce
to disable doze mode.TODO
AndroidHideAppIcon
) that automatically (or continually?) prompts the user to disable this optimisation without needing an established session?