Android广播接收器无法正常工作

时间:2011-07-14 19:15:06

标签: java android broadcastreceiver

我正在尝试让我的应用程序在打开屏幕时打印某些内容,但它无法正常工作。

以下是我在清单文件中的内容

<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电源按钮,屏幕打开/关闭,但我的消息没有出现在日志中。我错过了什么?它看起来和我在网上找到的例子相同。

3 个答案:

答案 0 :(得分:7)

您无法通过清单中注册的ACTION_SCREEN_ON收听BroadcastReceiver广播。您必须通过registerReceiver()从正在运行的组件注册它。这个特性(ACTION_SCREEN_OFFACTION_BATTERY_CHANGED,也许ACTION_USER_PRESENT)的广播相当少。

答案 1 :(得分:1)

如果通过清单文件注册,

ACTION_SCREEN_ON将无效。您需要动态注册它。

Ashu singh

答案 2 :(得分:0)

也许您忘记在上注册服务

<application>标签:

<service android:name=".YourService" />