2012-12-01 2 views
1

Я пытаюсь получить приложение на экране блокировки для ввода данных от пользователя, но не смог
сделать это.android FLAG_SHOW_WHEN_LOCKED не работает

Я попытался следующие строки в OnCreate, а также onAttachToWindow обратных вызовов, но ничего, кажется, приста

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

Я проверил большинство вопросов по StackOverflow и все они указывают на вышеуказанном растворе.

Нужно ли использовать какое-либо разрешение, или я ничего не пропускаю. Я работаю на корневое GALAXY S

ответ

0

Ответ на этот вопрос предлагается ниже тоже не работает ... Единственный вариант слева для меня теперь добавляет разрешение для отключения keygaurd в манифесте и используя

KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); myLock = myKeyGuard.newKeyguardLock(); myLock.disableKeyguard(); 

Я не Не хотите добавлять новое разрешение, потому что это приведет к тому, что мое приложение будет обновляться вручную, вместо автоматического обновления. :(

+0

Что такое различие между вашим ответом или ответом? вы делаете то же самое с помощью кода, который я делаю с помощью LayoutParams. поместите мой код в правильную деятельность, тогда он будет работать уверенно –

+0

, если у вас есть проблема, вы можете прочитать здесь обо всех флагах. http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DISMISS_KEYGUARD –

+0

Ваш Ответ - это тот, который, я надеюсь, мог бы работать, поскольку он не требует, чтобы я заботился о включении и отключении блокировки клавиатуры, а также не нуждался в каком-либо разрешении. Мой ответ с другой стороны требует разрешения, добавленного в манифест, и включить или отключить вручную –

2

Следует заметить, что ваша деятельность не должна быть диалог я определен в манифесте:.

<activity 
    android:name="TestDialog" 
    android:theme="@android:style/Theme.Dialog" > 
</activity> 

После того как я удалил тему, она сработала, и активность была отображена ov er любой экран блокировки. Возможно, вы можете смоделировать диалог с помощью стиля @android:style/Theme.Translucent.

0

У меня была такая же проблема, и я могу подтвердить, что проблема связана с диалоговой темой. Кажется, что атрибут android: windowIsFloating отвечает, что диалог не отображается поверх экрана блокировки. Этот атрибут установлен в true в диалоговых тонах Голо.

Но если вы черпаете свой диалог тему Холо в собственном стиле, как это:

<style name="ReminderAlarmDialog" parent="@android:style/Theme.Holo.Dialog"> 
    <item name="android:windowIsFloating">false</item> 
</style> 

диалог активность будет показан на верхней части экрана блокировки. Только проблема: диалоговое окно затем заполнит весь экран и, следовательно, выглядит не очень хорошо. Таким образом, это не настоящее решение, а объяснение, почему темы диалога не работают.

0

Я встречаюсь с той же проблемой, решение удаляет строку setType в вашей деятельности. (Если вы уже это добавили)

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    //getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
} 
Смежные вопросы