Android:将扫描结果列表从onReceive传递到MainActivity

Android:将扫描结果列表从onReceive传递到MainActivity,android,android-intent,Android,Android Intent,我有seprate BroadcastReceiverListener,我想将seprate“BroadcastReceiverListener”类中的onReceive()中的“List ScanResult updatedResults=new ArrayList ScanResult;传递给MainActivity。如何使用putExtra实现这一点 谢谢你的帮助 public class BroadcastReceiverListener extends BroadcastReceive

我有seprate BroadcastReceiverListener,我想将seprate“BroadcastReceiverListener”类中的onReceive()中的“List ScanResult updatedResults=new ArrayList ScanResult;传递给MainActivity。如何使用putExtra实现这一点

谢谢你的帮助

public class BroadcastReceiverListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(
                android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {

            WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            if (!wifi.isWifiEnabled()) {
                Toast.makeText(context, "Please turn your Wi-Fi on",
                        Toast.LENGTH_SHORT).show();
                // if (wifi.getWifiState() !=
                // WifiManager.WIFI_STATE_ENABLING) {
                // wifi.setWifiEnabled(true);
                // }

            }

            WifiManager wifi = (WifiManager) context
                    .getSystemService(Context.WIFI_SERVICE);

            WifiManager wifiManager = (WifiManager) context
                    .getSystemService(Context.WIFI_SERVICE);
            final List<ScanResult> results = wifiManager.getScanResults();
            if (results != null) {
                // list of access points from the last scan
                List<ScanResult> updatedResults = new ArrayList<ScanResult>();
                // pick Wi-Fi access points which begins with these "SV-"
                // characters.
                for (int i = 0; i < results.size(); i++) {
                    String ssid = results.get(i).SSID;
                    // Pattern p = Pattern.compile("^KD-(4[0-9]{2}|500)$");
                    // Matcher m = p.matcher(ssid);
                    // if(m.matches()){}else{}
                    if (ssid.startsWith("KD")) {

                        updatedResults.add(results.get(i));

                    }
                }

                Intent updateIntenet = new Intent(context, MainActivity.class);

                updateIntenet.putParcelableArrayListExtra("broadcast_event",
                        updatedResults);
                context.startActivity(intent);

            }

        }
      }
  }
公共类BroadcastReceiverListener扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
如果(intent.getAction()等于(
android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){
WifiManager wifi=(WifiManager)getSystemService(Context.wifi\u SERVICE);
如果(!wifi.isWifiEnabled()){
Toast.makeText(上下文,“请打开Wi-Fi”,
吐司。长度(短)。show();
//如果(wifi.getWifiState()=
//WifiManager.WIFI_状态_启用){
//wifi.setWifiEnabled(true);
// }
}
WifiManager wifi=(WifiManager)上下文
.getSystemService(Context.WIFI_服务);
WifiManager WifiManager=(WifiManager)上下文
.getSystemService(Context.WIFI_服务);
最终列表结果=wifiManager.getScanResults();
如果(结果!=null){
//上次扫描的访问点列表
List updatedResults=new ArrayList();
//选择以这些“SV-”开头的Wi-Fi接入点
//人物。
对于(int i=0;i
MainActivity中的onneWinEvent方法:

@覆盖
受保护的void onNewIntent(意图){
String intentResult=intent.getStringExtra(“广播事件”);
if(intentResult!=null){
//这里我得到了一个错误:类型MainActivity的getParcelableArrayList(String)方法未定义
列表结果=getParcelableArrayList(intentResult);
字符串a=deliverBestAccessPoint(结果);
text wifi.setText(a.toString());
}否则{
text wifi.setText(“没有可用的路由”);
}

}
由于ScanResult实现了可包裹,您只需从以下位置进行更改:

// list of access points from the last scan
Lst<ScanResult> updatedResults = new ArrayList<ScanResult>();
//上次扫描的访问点列表
Lst updatedResults=new ArrayList();
致:

//上次扫描的访问点列表
ArrayList updatedResults=新的ArrayList();

您使用的是哪种arraylist?String,Integer…??List updatedResults=new arraylist()。ScanResultDoes ScanResult实现可包裹接口?ScanResult是可包裹的在我的情况下,我必须在继承的方法“writeParcel()”中写些什么,我应该在“onNewIntent()中写些什么“在另一侧的主活动中?您根本不需要调用writeParcel。只需使用您当前的代码。当您在活动中收到意图时,只需使用getParcelableArrayList即可。我在MainActivity中收到错误“类型MainActivity的方法getParcelableArrayList(字符串)未定义”。请看我更新的问题代码。这是一个意图对象的方法
// list of access points from the last scan
ArrayList<ScanResult> updatedResults = new ArrayList<ScanResult>();