Android What permissions required to call PowerManager.goToSleep(n) put device in sleep mode?

Solution 1:

DEVICE_POWER is a level 2 permission and protected permission and hence it is not provided to any app which request it via manifest, to get this permission successfully we need to have Platform certificate in our make file and shared user id set in manifest as system...

LOCAL_CERTIFICATE := platform (makefile entry)

android.uid.system (shared  user id )

There isnt a way around this i have looked around havent found any ...

Solution 2:

In old version, I read that it is a signature-protected permission, i.e. only apps that got signed as system apps are allowed to.

Solution 3:

java -jar signapk.jar platform.x509.pem platform.pk8 bin/TestApp-unsigned.apk bin/TestApp.apk

I had the exact same problem and this worked for me. Get signapk.jar from https://github.com/appium/sign. the repository also includes the Android test certificate, which works e.g. with a rooted nook.