2016-11-13 15 views
0

私がやろうとしていることについてすばやく。私は、特定のWi-Fi接続を探すスキャンを作成しています。それが見つかった場合は、StartingActivity with Stringに戻ります。結果が見つからない場合はトーストを表示

しかし、すべての接続をスキャンして正しいものが見つからなかった場合は、どのように表示するかをToastにします。今のところ、ただそこに座っているだけなので、何もしません。そして私はそれが何も見つけ出さなかったことをユーザーに説明しなければならない。

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:それを行うにはどのように

私の最高の推測では、タイマーを設定し、それが5秒間そこに座っているならば、トーストを表示する(つまり、それが変更された活動をしていないことを意味し、これは結果を発見されませんでした)。しかし、それはそれを行う最良の方法ではないと感じています。

+0

表示に問題がありますか? –

+0

私は試したときに何かを見つけたとしてもトーストを表示したので、どこに置くのか分かりません –

+0

あなたはネットワークを探しているときにelse条件に置くべきです –

答えて

1

results.sizeがゼロ(0)の場合、次の行の後にトーストを表示します。

final int Amount = results.size(); 

これで十分でしょう。 [あなたが放送受信機からトーストを投げることができるかどうかはわかりません。私は彼らとほとんど仕事をしていません。]

乾杯!

+0

"放送受信機からトーストを投げることができるかどうかはわかりません。" - >はい、 'onReceive'で提供される' Context'インスタンスを使用できます。 – clownba0t

関連する問題