首页 » 技术分享 » Android反射调用goToSleep实现一键锁屏、亮屏

Android反射调用goToSleep实现一键锁屏、亮屏

 
/**
*   关闭屏幕 ,其实是使系统休眠
*
*/
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实现一键锁屏、亮屏,转载请注明来源!

0