我如何跟踪多个广播接收器



我有2个不同的文件,需要初始化相同的广播接收器。我在检索结果时遇到问题。不知何故,我有时得到空值,这是由于无法正确引用启动扫描的类。

下面是一个代码示例。

public void Connection_Logic (Context c)
    IntentFilter wififilter; 
    wififilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
    public WifiManager wifiManager;
    wifireceiver = serviceConsume.wifireceiver;
    c.registerReceiver(wifireceiver, wififilter);
    wifiManager.startScan();
}
public class serviceConsume {
    public WifiManager wifiMan;
    wifiMan = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
    public BroadcastReceiver wifireceiver = new Wifi_Broadcast(this);
    IntentFilter wififilter; 
    wififilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
    registerReceiver(wifireceiver, wififilter);
    wifiMan.startScan();
}
public class Wifi_Broadcast extends BroadcastReceiver {
    public ServiceConsume main;
    public Connection_Logic ConnLog;
    public Wifi_Broadcast(ServiceConsume main) {
        super();
        this.main = main;
    }
    public Wifi_Broadcast(Connection_Logic ConnLog) {
        super();
        this.ConnLog = ConnLog;
    }
    @Override
    public void onReceive(Context c, Intent intent) {
        if(main != null) {
            List<ScanResults> results = ConnLog.wifiManager.getScanResults();
        } else if (ConnLog != null) {
            List<ScanResults> results = ConnLog.wifiMan.getScanResults();
        }
    }
}

有没有人有任何想法,为什么我可能会得到空值的结果?我做错了吗?如果有人有这个工作的代码示例,将不胜感激。

谢谢!

if(main != null) {
            List<ScanResults> results = ConnLog.wifiManager.getScanResults();
        } else if (ConnLog != null) {
            List<ScanResults> results = main.wifiMan.getScanResults();
        }

在你的else if你使用main,但main是空的。也许它应该像这样:

   if(main != null) {
                List<ScanResults> results = main.wifiMan.getScanResults();   
            } else if (ConnLog != null) {
                List<ScanResults> results = ConnLog.wifiManager.getScanResults();
            }

最新更新