在Android上显示活动时解锁设备

时间:2014-02-13 21:01:29

标签: android wakelock android-wake-lock

我有一个应用程序,它应该在屏幕出现时解锁。

我尝试了一些东西,在.java文件和AndroidManifest中编写了一些代码,但它无法解锁设备。

这是我的代码;

Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
    r = RingtoneManager.getRingtone(getApplicationContext(), ringtone);
    r.play();   

    /*
    PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
    WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
    wakeLock.acquire();


    KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock keyguardLock =  keyguardManager.newKeyguardLock("TAG");
    keyguardLock.disableKeyguard(); 


    window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    */

    PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
    WakeLock mWakeLock = pm.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "MyService");
    mWakeLock.acquire();
    mWakeLock.release();

    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

此代码有什么问题?

你能帮我吗?

我已经尝试了你提供的所有答案,但仍然没有成功

1 个答案:

答案 0 :(得分:0)

您需要3个标记,FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON

import android.view.WindowManager.LayoutParams;
private Window window;

将此添加到您的onCreate()

    window = this.getWindow();
    window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);

或使用onResume()方法,它适用于我=)

protected void onResume() {
    super.onResume();
    window = this.getWindow();
    window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
}