【问题标题】:How make mobile go sleeping programmatically如何以编程方式使手机进入睡眠状态
【发布时间】:2012-11-29 14:15:10
【问题描述】:

我需要做一个关闭移动屏幕并以编程方式进入睡眠状态的应用程序。例如,如果屏幕在没有 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。 但我的清单中有这个权限。

有没有其他方法可以做到这一点,而不用root我的手机?

【问题讨论】:

标签: java android standby powermanager


【解决方案1】:

android.permission.DEVICE_POWER 只授予系统应用,第三方应用没有此权限。

如果你没有持有wakelock,如果你减少SCREEN_OFF_TIMEOUT,那么你应该可以实现5分钟后自动进入睡眠

【讨论】:

  • 事实上,这就是应用程序所做的,如果有人在 5 分钟内持有唤醒锁而不释放它,我应该关闭设备,以节省电池电量。通过减少 SCREEN_OFF_TIMEOUT 我不知道我是否会解决问题。
  • 如果说电子邮件应用程序持有唤醒锁,那么任何第三方应用程序都不应该让手机进入睡眠状态,这会破坏功能,所以我认为这是不可能的。
猜你喜欢
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2010-09-28
相关资源
最近更新 更多