Я видел этот код для сканирования сети WIFI на этом сайте: http://www.androidsnippets.com/scan-for-wireless-networks.Есть хороший способ объявить BroadcastReceiver?
Я внедрил код на веб-сайте. Он отлично работает, но когда я помещаю BroadcastReceiver
во внешний класс и вызываю его в своей деятельности, мой журнал, но всегда дает nullpointer.
Я звоню BroadcastReceiver
в onCreate
метод, называемый по wifiReceiver.getWifiManager.startScan()
, поэтому в основном он должен начать onReceive
метод из моего приемника. Возможно, я ошибаюсь. Затем я вызываю wifiReceiver.getListResult
, итерацию его для вывода.
Мой вопрос: что я делаю неправильно? Есть ли правильный способ сделать это? Я искал через Интернет, и я видел, как люди делают это по-разному, например:
вложенными внутри класса
этот путь
BroacastReceiver receiver=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
do something
}
};
- или создайте внешний класс и назовите его
Мой простой тест, чтобы увидеть, если это работает, это мой BroadcastReceiver
класс:
public class WifiReceiver extends BroadcastReceiver {
private List<ScanResult> wifiList;
private WifiManager mainWifi;
public void onReceive(Context c, Intent intent) {
mainWifi = (WifiManager) c.getSystemService(Context.WIFI_SERVICE);
wifiList = mainWifi.getScanResults();
}
public List<ScanResult> getListResult(){
return wifiList;
}
public WifiManager getWifiManager(){
return mainWifi;
}
}
В файле манифеста, я уже заявил мой приемник и дал разрешения:
<receiver android:name=".WifiReceiver">
<intent-filter>
<action android:name="android.net.wifi.SCAN_RESULTS" />
</intent-filter>
</receiver>
И инстанциации моя деятельность:
WifiReceiver wifiReceiver = new WifiReceiver();
Спасибо, что я искал такое объяснение. Я не знаю, почему я получил отрицательный голос, не имея никакого объяснения, но ваш ответ заставляет меня быть счастливым. – DarkVision