2015-04-12 55 views
0

我有分开BroadcastReceiverListener,我想通过“列表ScanResult updatedResults =新ArrayList ScanResult;从onReceive()在分开”BroadcastReceiverListener“类与意图到。MainActivity我怎么能做到这一点与putExtraAndroid:通过列表scanResult机智意图从onReceive到MainActivity

我感谢所有帮助

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); 

      } 

     } 
     } 
    } 

onNewIntent方法MainActivity:?

\t  @Override 
 
\t  protected void onNewIntent(Intent intent) { 
 
\t   String intentResult = intent.getStringExtra("broadcast_event"); 
 
\t   if (intentResult != null) { 
 
    //here I am getting the error: The method getParcelableArrayList(String) is undefined for the type MainActivity 
 
\t    List<ScanResult> results = getParcelableArrayList(intentResult); 
 
\t    String a = deliverBestAccessPoint(results); 
 
\t    textWifi.setText(a.toString()); 
 
\t   } else { 
 
\t    textWifi.setText("No route is available."); 
 
\t   } 
 
\t  }

+0

什么样的ArrayList您正在使用?字符串,整数..... ??? – greywolf82

+0

列表 updatedResults = new ArrayList ()。 ScanResult –

+0

ScanResult是否实现可分段接口? – greywolf82

回答

0

由于ScanResult实现Parcelable你只需要改变的:

// list of access points from the last scan 
Lst<ScanResult> updatedResults = new ArrayList<ScanResult>(); 

要:

// list of access points from the last scan 
ArrayList<ScanResult> updatedResults = new ArrayList<ScanResult>(); 
+0

让我在继承的方法“writeParcel()”中写一些东西,在我的情况下,我应该写什么“MainNectivity”中的“onNewIntent()”? –

+0

根本不需要调用writeParcel。只需使用您当前的代码。当您在活动中收到意图时,只需使用getParcelableArrayList – greywolf82

+0

我在MainActivity中收到错误“方法getParcelableArrayList(String)未定义用于MainActivity类型”。请看我更新的问题代码。 –