【问题标题】:Broadcast receiver onReceive() is not called未调用广播接收器 onReceive()
【发布时间】:2017-04-19 08:06:27
【问题描述】:

广播接收器

 mBroadcastReceiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {

                Log.i(TAG,"contact list populate broadcast")

                var action = intent.action

                Log.v("Action is ",action)
                when (action) {
                    GetContactListFromServer -> {
                       println("Get contact list")


                    }
                }

            }
        }

        val filter = IntentFilter(GetContactListFromServer)
        this.registerReceiver(mBroadcastReceiver, filter)

这就是我发送广播的方式

val i = Intent(ContactListActivity.Obz.GetContactListFromServer)
i.`package` = mApplicationContext?.getPackageName()
mApplicationContext?.sendBroadcast(i)

这段代码直到昨晚都运行良好。我无法调试出了什么问题?

【问题讨论】:

  • mApplicationContext?.sendBroadcast(i)被调用时,你确定mApplicationContext不等于null吗?
  • 是 mApplicationContext 不为空 @miensol

标签: android broadcastreceiver kotlin android-broadcastreceiver


【解决方案1】:

这样试试

在你的activity里面的onCreate方法中声明

LocalBroadcastManager.getInstance(context).registerReceiver(MyBroadcastReceiver, new IntentFilter("MyFilter"));

然后在Activity中实现MyBroadcastReceiver

private final BroadcastReceiver MyBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            String Action = intent.getStringExtra("Action");
            switch (Action){
                case "updatedata":
                    String message = intent.getStringExtra("message");
                    String date_time = intent.getStringExtra("date_time");
                    break;

                default:
                    break;
            }
        }
    };

像这样发送广播

Intent intent = new Intent("MyFilter");
intent.putExtra("message", message);
intent.putExtra("date_time", date_time);
intent.putExtra("Action", "updatedata");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多