java - 如何从广播接收器调用 API(改造)?
问题描述
我有下一个代码,我想从我的 viewModel 使用 sendWarning 方法,我从片段中的按钮使用它并且工作正常但是当我想从广播接收器使用它时,这会返回一个奇怪的错误,我找不到解决方案(由: java.lang.NullPointerException: url) 仅此而已,不显示更多信息,我想知道我的代码是否正确或需要其他内容。
注意:我使用这样的原因需要在后台使用物理按钮(效果很好)
公共类 KeysBroadcast 扩展 BroadcastReceiver 实现 HasBroadcastReceiverInjector {
@Inject
PanicButtonVM panicButtonVM;
@Inject
DispatchingAndroidInjector<BroadcastReceiver> dispatchingBroadcastReceiverInjector;
public KeysBroadcast(){
super();
}
public int count = 0;
@Override
public void onReceive(Context context, Intent intent) {
AndroidInjection.inject(this, context);
if(count > 3){
Toast.makeText(context, "MAYOR A 3", Toast.LENGTH_SHORT).show();
panicButtonVM.sendWarning("WARNING");
}
if(intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION"){
Toast.makeText(context, "VOLUME_CHANGED_ACTION",
Toast.LENGTH_SHORT).show();
count++;
}
}
@Override
public AndroidInjector<BroadcastReceiver> broadcastReceiverInjector() {
return dispatchingBroadcastReceiverInjector;
}
}
公共类 PanicButtonVM 扩展 BaseViewModel {
PanicRemoteRepository panicRemoteRepository;
@Inject
public PanicButtonVM(PanicRemoteRepository panicRemoteRepository){
this.panicRemoteRepository = panicRemoteRepository;
}
public void sendWarning(String warning){
panicRemoteRepository.sendWarning(warning)
.subscribeOn(Schedulers.newThread())
.subscribe();
}
}
解决方案
推荐阅读
- python - 使用 pip 安装后的 matplotlib 错误
- oracle - 在 oracle PLSQL 中以以下给定方式对特定列应用分组并设置记录的顺序
- html - 如何使用 CSS/SVG 创建这个形状?
- algorithm - 如何找到元素之间的最小距离大于某个值且元素值之和最大的子集?
- sqldatareader - 如何使用 SQL Data Reader 查看数据库中的数量?
- ios - iOS 中最简单的 webview 应用程序 - 无法运行
- visual-studio-code - 从 VScode 打开 JupyterNotebook 到浏览器
- python - 使用 OpenCV 检测人脸时相机滞后
- c++ - CMake 不会链接我的库,make 文件会
- python - 如何在 python 中不使用 itertools 组合数据框?