首页 > 解决方案 > 如何从广播接收器调用 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();
}

}

标签: javaandroidbroadcastreceiverretrofitviewmodel

解决方案


推荐阅读