【问题标题】:broad cast receive does not show notifications广播接收器不显示通知
【发布时间】:2015-09-13 10:51:49
【问题描述】:

我正在尝试在屏幕打开或关闭时接收通知。我注册了一个广播接收器,如下所示。

但是当我按下边缘右上角的按钮时,会调用接收器,但代码中显示的日志语句不显示。

请告诉我更正它

代码

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    String action = intent.getAction();

    switch (action) {

    case Intent.ACTION_SCREEN_ON:
        Log.w(TAG, SubTag.msg("onReceive", "Intent.ACTION_SCREEN_ON"));
        break;
    case Intent.ACTION_SCREEN_OFF:
        Log.w(TAG, SubTag.msg("onReceive", "Intent.ACTION_SCREEN_OFF"));
        break;

    default:
        Log.w(TAG, SubTag.msg("onReceive", "UNHANDLED CASE"));
        break;
    }
}

更新

我在onstart中注册了接收器,如下:

registerReceiver(this.mScreenReceiver, new IntentFilter(intent.ACTION_SCREEN_ON))

registerReceiver(this.mScreenReceiver, new IntentFilter(intent.ACTION_SCREEN_OFF))

【问题讨论】:

  • 您是否在清单中注册了接收方? Log 也没有出现在屏幕上,也许你想用敬酒。
  • @SaNtoRiaN 你的意思是许可吗?不,我没有添加任何权限。我是不是该?请告诉我是哪一个
  • @user2121 ,您是否尝试过 Log.d 而不是 Log.w (可能是我在首选项中看不到 Log.w)?必须尝试通过调试断点捕获“onRecieve”?
  • @user2121,你有没有直接试过这个例子:stackoverflow.com/a/14834160/1979882

标签: android android-intent broadcastreceiver android-broadcast


【解决方案1】:

这不是权限,您应该在清单中注册您的广播。在清单中的application 标记内,编写此代码,但首先将名称更改为您的广播类名称

<receiver android:name=".your_class_name_here" >
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_OFF" />
        <action android:name="android.intent.action.SCREEN_ON" />
    </intent-filter>
</receiver>

更新 试试这个广播

private BroadcastReceiver ScreenActions = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("BroadcastReceiver", "Broadcast is called");

        if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            Log.i("BroadcastReceiver", "Screen ON");
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            Log.i("BroadcastReceiver", "Screen OFF");
        }

    }
};

并在您的onStart() 中注册它

registerReceiver(ScreenActions, new IntentFilter(Intent.ACTION_SCREEN_ON));
registerReceiver(ScreenActions, new IntentFilter(Intent.ACTION_SCREEN_OFF));

【讨论】:

  • 好的,但是我正在使用蓝牙,我还没有在清单中注册它,它工作正常!!我在 onStart() 中注册了我的接收器
  • @user2121 是的,您可以在清单或 onStart() 中执行两种方法之一,但重要的是注册它
  • 所以我在 onstart() 中注册了屏幕接收器,但它不工作
  • @user2121 您是否尝试在switch 之外使用log 以确保调用接收方?
  • @user2121 我在eclipse中做了一个项目,你可以导入它或者使用src文件中的代码mediafire.com/download/tjfdwzs4fusllqo/ScreenOnOff.rar我找不到其他解决这个问题的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多