First of all, the following command works perfectly fine on Android 5.1.1 (CM, PA and Tesla ROM builds):
adb shell su -c 'appops set android SYSTEM_ALERT_WINDOW deny'
The said command blocks Android System (
android) to draw over other apps (show overlay).
The same command on execution in COS12 (Android 5.0.2) throws the command's usage and the error:
Error: Unknown operation string: SYSTEM_ALERT_WINDOW
(SYSTEM_ALERT_WINDOW henceforth as <OP> here)
Per the info in the source code of AppOpsManager.java, the error should show up when
<OP> is null which it is not in my opinion.
Series of failed attempts
- I tried with multiple types of operations with no avail, both in uppercase and lowercase characters.
- I also unsuccessfully tried with interactive shell session, that is,
- I replaced single quotes with double quotes and also attempted with enclosing
<OP>with double quotes.
- I hopelessly tried
<OP>too. Same goes for using
- While I didn't need to change the SELinux status to Permissive in CM12.1, I did set it to Permissive and tried aforesaid steps with no success.
- Tried for a change: I thought App Ops by nowsky and App Ops [Root] by Droid Mate might help but they simply showed what Privacy Guard of CM gives.
- I edited
/data/system/appops.xmland reflected the changes found in the same file for CM12.1. Since I was not clear on what I was doing, it partially worked.
- There is the system service
appopsand I've no idea how to make good use of it.
So, what is wrong in my command and how do I make it work?
My original goal
The problem posted here can be solved by that first command in all of my Android 5.1.1 builds. (There may be side-effects of it.) Now I need to find a way to port my solution on Android 5.0.2 build.
Note: the device is OnePlus One.
Update: I've now tested the command on stock Android 5.0 (running on Nexus 6) and the situation remains same.