2016-11-13 16 views
0

Schnell über das, was ich versuche zu tun. Ich erstelle ein Skript, das nach bestimmten Wi-Fi-Verbindungen sucht. Wenn es gefunden wird, kehrt es zu StartingActivity mit String zurück.Show Toast, wenn keine Ergebnisse gefunden wurden

Aber wie mache ich es Toast anzeigen, wenn es alle Verbindungen gescannt und nicht die richtige gefunden hat. Denn im Moment sitzt es einfach da und tut nichts. Und ich muss dem Benutzer erklären, dass es nichts gefunden hat.

Button btnHit; 
TextView txtJson; 
String urlfinal; 
String fssid; 
Intent intent; 
private static final String TAG = "My Activity"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_find_connection); 

    btnHit = (Button) findViewById(R.id.request); 
    txtJson = (TextView) findViewById(R.id.results); 


    if (Build.VERSION.SDK_INT > 22) { 

     final String CoarseLocation = Manifest.permission.ACCESS_COARSE_LOCATION; 
     final String AccessWifi = Manifest.permission.ACCESS_WIFI_STATE; 
     final String ChangeWifi = Manifest.permission.CHANGE_WIFI_STATE; 

     if (checkSelfPermission(CoarseLocation) != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 123); 
     } 

     if (checkSelfPermission(AccessWifi) != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCESS_WIFI_STATE}, 123); 
     } 

     if (checkSelfPermission(ChangeWifi) != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{Manifest.permission.CHANGE_WIFI_STATE, Manifest.permission.CHANGE_WIFI_STATE}, 123); 
     } 
    } 



    LocationManager lman = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE); 
    boolean network_enabled = false; 

    try 
    { 
     network_enabled = lman.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
    } catch (Exception ex) {} 


    if (!network_enabled) 
    { 
     startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0); 
    } 


    btnHit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      final WifiManager mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 

      mWifiManager.setWifiEnabled(true); 

      IntentFilter filter = new IntentFilter(); 
      filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 

      registerReceiver(new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent intent) { 

        List<ScanResult> results = mWifiManager.getScanResults(); 
        final int Amount = results.size(); 

        int num = 0; 

        while (num < Amount) 
        { 
         Log.v(TAG, "SSID = " + results.get(num).SSID); 

         num = num+1; 
        } 

        int dis = 0; 

        String res = "Results:\n\n\n"; 

        while (dis < Amount) 
        { 
         res = res + results.get(dis).SSID + "\n\n"; 

         new JsonTask().execute(results.get(dis).SSID); 

         dis = dis+1; 
        } 

       } 
      }, filter); 

      mWifiManager.startScan(); 

     } 
    }); 

} 



private class JsonTask extends AsyncTask<String, String, String> { 

    ProgressDialog pd; 

    protected void onPreExecute() { 
     super.onPreExecute(); 

     pd = new ProgressDialog(FindConnection.this); 
     pd.setMessage("Please wait..."); 
     pd.setCancelable(false); 
     pd.show(); 
    } 

    protected String doInBackground(String... params) { 


     HttpURLConnection connection = null; 
     BufferedReader reader = null; 

     try { 
      fssid = params[0]; 
      urlfinal = "http://myurl?ssid=" + fssid; 
      URL url = new URL(urlfinal); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 


      InputStream stream = connection.getInputStream(); 

      reader = new BufferedReader(new InputStreamReader(stream)); 

      StringBuffer buffer = new StringBuffer(); 
      String line = ""; 

      while ((line = reader.readLine()) != null) { 

       buffer.append(line+"\n"); 

       if (!line.equals("null")) 
       { 
        String NetworkSSID = fssid; 
        String NetworkPass = line; 

        WifiConfiguration config = new WifiConfiguration(); 
        config.SSID = "\"" + NetworkSSID + "\""; 

        config.preSharedKey = "\"" + NetworkPass + "\""; 

        WifiManager wifiman = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); 
        wifiman.addNetwork(config); 

        List<WifiConfiguration> list = wifiman.getConfiguredNetworks(); 

        for (WifiConfiguration i : list) 
        { 

         if (i.SSID != null && i.SSID.equals("\"" + NetworkSSID + "\"")) 
         { 
          wifiman.disconnect(); 
          wifiman.enableNetwork(i.networkId, true); 
          wifiman.reconnect(); 

          break; 
         } 

         Intent intent1 = new Intent(FindConnection.this, StartingPage.class); 
         intent1.putExtra("ssid_name", fssid); 
         startActivity(intent1); 
        } 
       } 

      } 

      return buffer.toString(); 


     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (connection != null) { 
       connection.disconnect(); 
      } 
      try { 
       if (reader != null) { 
        reader.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     if (pd.isShowing()){ 
      pd.dismiss(); 
     } 
    } 
} 

UPDATE:

Meine beste Vermutung, wie man das Set ist ein Timer, und wenn es dort für 5 Sekunden sitzt dann einen Toast angezeigt werden (das bedeutet, es nicht veränderte Aktivität hat, fand so keine Ergebnisse). Aber es ist das Gefühl, dass dies nicht der beste Weg ist.

+0

Was ist das Problem bei der Anzeige? –

+0

Ich weiß einfach nicht, wo ich es platzieren soll, denn wenn ich versucht habe, zeigt es Toast an, selbst wenn es etwas gefunden hat –

+0

solltest du es wahrscheinlich in den else Zustand setzen, wenn du nach Netzwerken suchst –

Antwort

1

Zeigen Sie Ihren Toast nach der folgenden Zeile, wenn results.size null ist (0).

final int Amount = results.size(); 

Das ist wahrscheinlich ausreichend. [Ich bin mir nicht sicher, ob Sie Toast von einem Rundfunkempfänger werfen können. Ich habe kaum mit ihnen gearbeitet.]

Prost!

+0

"Ich bin mir nicht sicher, ob Sie Toast von einem Rundfunkempfänger werfen können." -> Ja, Sie können - verwenden Sie die 'Context'-Instanz, die in' onReceive' bereitgestellt wird. – clownba0t

Verwandte Themen