2013-05-03 10 views
4

Я определил BroadcastReceiver в AndroidManifest.xml нижеBroadcastReceiver OnReceive не вызывался

<receiver 
    android:name="com.example.hello.ScreenUnlockReceiver" 
    android:enabled="true" 
    android:singleUser="true"> 
    <intent-filter> 
     <action android:name="android.content.Intent.ACTION_USER_PRESENT" /> 
    </intent-filter> 
</receiver> 

и определил приемник, как показано ниже:

public class ScreenUnlockReceiver 
     extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     //start activity 
     Intent i = new Intent(); 
     i.setClassName("com.example.hello", "LoginActivity"); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 

Но BroadcastReceiver не срабатывает, когда я разблокировать экран и функция LoginActivity не отображаются. LoginActivity - это функция входа в систему по умолчанию, которая поставляется с Android-файлом sroid.

Я пропустил что-то в использовании - разрешение или что-то еще, пожалуйста, дайте мне знать. Благодаря

Santhosh

+0

проверка rciovati ответить его абсолютно правильно – juned

ответ

4

Действие вы должны перехватывать является:

<intent-filter> 
    <action android:name="android.intent.action.USER_PRESENT" /> 
</intent-filter> 

Developer Android ACTION_USER_PRESENT

+0

Спасибо за быстрый ответ. Я изменил на android.intent.action.USER_PRESENT, как упоминалось выше, а затем установил имя класса, как указано в 3h3 ниже .... но все же функция LoginActivity не запускалась при разблокировке экрана, прокручивая экран , –

+0

Я попытался бы отладить и проверить, что приемник вызван правильно. Попробуйте проверить Logcat, чтобы узнать, есть ли что-то, что может помочь вам разобраться с проблемой. – rciovati

4

вам следует исправить problom как этот
i.setClassName("com.example.hello", "com.example.hello.LoginActivity")

+0

Я сделал изменение как указано вами, но экран LoginActivity не появился после разблокировки экрана. Я пытаюсь показать приложение по умолчанию для пользователя, когда пользователь разблокирует планшет. Дайте мне знать, если у вас есть указатели. Спасибо –

+0

попробуйте это, в onResume() вашей деятельности, добавьте следующий код:
'final Window win = activity.getWindow(); final WindowManager.LayoutParams params = win.getAttributes(); params.flags | = WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; '
Я предлагаю вам взглянуть на исходный код Android, реализацию AlarmClock, пожелания, которые могут вам помочь – 3h3

+0

Я действительно пытался на эмуляторе, и он не работал , Пробовал то же самое на моем телефоне, и он работает. –

Смежные вопросы