/**
* 关闭屏幕 ,其实是使系统休眠
*
*/
public static void goToSleep(Context context) {
PowerManager powerManager= (PowerManager)context.getSystemService(Context.POWER_SERVICE);
try {
powerManager.getClass().getMethod("goToSleep", new Class[]{long.class}).invoke(powerManager, SystemClock.uptimeMillis());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
/**
* 唤醒屏幕
* @param context
*/
public static void wakeUp(Context context) {
PowerManager powerManager= (PowerManager)context.getSystemService(Context.POWER_SERVICE);
try {
powerManager.getClass().getMethod("wakeUp", new Class[]{long.class}).invoke(powerManager, SystemClock.uptimeMillis());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
只有系统级别的应用才能使goToSleep生效,并需要声明权限
android:name="android.permission.DEVICE_POWER"
如果是eng版本的rom ,
可以执行
adb remount
adb push xxx.apk /system/priv-app/
adb reboot
将apk push 到系统预置应用下, 应用即拥有了系统级别应用权限
转载自原文链接, 如需删除请联系管理员。
原文链接:Android反射调用goToSleep实现一键锁屏、亮屏,转载请注明来源!