Я знаю, что этот вопрос старый, но API четко заявляет, что программная попытка получить разблокировку клавиатуры не рекомендуется.
В методе oncCreate вашей деятельности правильная стратегия:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Надеюсь, это поможет другим.