gpt4 book ai didi

java - 广播接收器未接收到

转载 作者:行者123 更新时间:2023-12-01 10:54:55 28 4
gpt4 key购买 nike

我知道这个问题经常出现,但我已经浏览了大约 20 个堆栈溢出问题,但未能找到解决方案。我相当确定这是我做错的简单事情,但我对 Android 还很陌生,这项作业将在 7 小时左右完成。

一切正常,直到调用接收者为止。这是来自服务的调用

Intent intent = new Intent(getApplicationContext(), MainActivity.WatchReceiver.class);
intent.putStringArrayListExtra(CHANGEKEY, changedURLs);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);

现在这是接收器,嵌套在主 Activity 中

public class WatchReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(null, "broadcast received");
markAsChanged(intent.getStringArrayListExtra(WatchService.CHANGEKEY));
}
}

主要 Activity 的启动函数,我在其中注册接收器

@Override
protected void onStart() {
super.onStart();
// Bind to LocalService
wr = new WatchReceiver();
markedAsChanged = new ArrayList<Integer>();
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(wr, new IntentFilter());
Intent intent = new Intent(this, WatchService.class);
sc = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
wb = (WatchService.WatchBinder) service;
}

@Override
public void onServiceDisconnected(ComponentName name) {
wb = null;
}
};
bindService(intent, sc, Context.BIND_AUTO_CREATE);
}

最佳答案

显式 Intents 不适用于 registerReceiver(),无论您是在 Context 上调用 registerReceiver() >(对于系统级广播)或在 LocalBroadcastManager 实例上(对于本地广播)。

相反:

  • 定义操作字符串(例如,final String ACTION="com.delosa.nick.ITS_HUMP_DAY";)

  • 创建要广播的 Intent 时使用该操作字符串 (new Intent(ACTION))

  • 创建 IntentFilter 时使用该操作字符串(new IntentFilter(ACTION))

关于java - 广播接收器未接收到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com