Android Broadcast Receiver не работает - PullRequest
0 голосов
/ 14 июля 2011

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

Вот что у меня есть в моем файле манифеста

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity ...>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <receiver android:name="PhoneBroadcastReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.SCREEN_ON"></action>
        </intent-filter>
    </receiver>
</application>

и мой приемник выглядит как

public class PhoneBroadcastReceiver extends BroadcastReceiver {

public PhoneBroadcastReceiver()
{
}

@Override
public void onReceive(Context _context, Intent _intent) {
    // TODO Auto-generated method stub
    String a = _intent.getAction();


    MessageHandler.log("Received action: " + a); // just a wrapper for printing to a log

}

}

, но ничего не печатает в журнале.Я продолжаю нажимать кнопку питания Android, и экран включается / выключается, но мое сообщение не отображается в журнале.Что мне не хватает?Это выглядит так же, как в примерах, которые я нашел в Интернете.

Ответы [ 2 ]

7 голосов
/ 15 июля 2011

Вы не можете прослушивать ACTION_SCREEN_ON трансляции через BroadcastReceiver, зарегистрированный в манифесте. Вы должны зарегистрировать его через registerReceiver() из запущенного компонента. Существует довольно мало передач с этой чертой (ACTION_SCREEN_OFF, ACTION_BATTERY_CHANGED и, возможно, ACTION_USER_PRESENT).

1 голос
/ 24 сентября 2013

ACTION_SCREEN_ON не будет работать, если зарегистрирован через файл манифеста.Вам необходимо зарегистрировать его динамически.

Ашу Сингх

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...