我需要做一个关闭手机屏幕并以编程方式进入睡眠状态的应用程序。例如,如果屏幕在没有user_present的情况下打开超过 5 分钟,我应该将其关闭。我尝试使用PowerManager(goToSleep()函数应该完全按照我想要的去做,但它似乎不起作用):
PowerManager pm = (PowerManager) m_context.getSystemService(Context.POWER_SERVICE);
if (pm.isScreenOn() )
{
pm.goToSleep(System.currentTimeMillis() + 1000
}
我的清单中具有以下权限:
<uses-permission android:name="android.permission.DEVICE_POWER"/>
它抛出一个异常:java.lang.SecurityException:用户 10068 和当前进程都没有android.permission.DEVICE_POWER。但我的清单中有此权限。
有没有另一种方法可以做到这一点,而无需生根我的手机?
android.permission.DEVICE_POWER
仅授予系统应用程序,第三方应用程序不会获得此权限。
如果您没有保持唤醒锁并且如果您减少SCREEN_OFF_TIMEOUT
,那么您应该能够在 5 分钟后自动入睡