【问题标题】:Android Broadcast Receiver Not WorkingAndroid广播接收器不工作
【发布时间】:2011-07-14 19:15:05
【问题描述】:

我正在尝试让我的应用在屏幕打开时打印一些内容以进行记录,但它没有按我的预期工作。

这是我的清单文件中的内容

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

【问题讨论】:

  • 您是否尝试过先将某些内容记录到 DDMS 的控制台以查看它是否真的进入了您的广播接收器? (使用Log.info("PhoneBroadcastReceiver ","Entering broadcast receiver")。如果您可以在控制台看到此日志,那么问题出在您的 MessageHandler 类中

标签: java android broadcastreceiver


【解决方案1】:

您无法通过清单中注册的BroadcastReceiver 收听ACTION_SCREEN_ON 广播。您必须通过 registerReceiver() 从正在运行的组件中注册它。具有此特征的广播很少(ACTION_SCREEN_OFFACTION_BATTERY_CHANGED,也许还有ACTION_USER_PRESENT)。

【讨论】:

    【解决方案2】:

    如果通过清单文件注册,ACTION_SCREEN_ON 将不起作用。需要动态注册。

    【讨论】:

      【解决方案3】:

      也许您忘记在上注册服务

      &lt;application&gt;标签:

      &lt;service android:name=".YourService" /&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多