2013-12-03 5 views
0

Сначала я предлагаю пользователю открыть Wi-Fi или нет. Я хочу открыть Wi-Fi, если он закрыт, сканировать все доступные Wi-Fi сети и подключиться к определенному на основе ssid.
Я хочу зарегистрировать широкий приемник, чтобы дождаться, пока WifiManager завершит результаты сканирования.Широкополосный приемник не работает

 public class Project1 extends Activity { 

     /** 
     * Called when the activity is first created. 
     */ 
     EditText userName; 
     EditText passWord; 
     Button button; 
     TextView thankYou; 
     WifiManager wifiManager; 
     List<ScanResult> results1; 
     BroadcastReceiver receiver; 
    public Boolean connectToNetworK() { 
      Log.e("Start of connect","Debug"); 
      Log.e("before wifi manager of connect","Debug"); 
      if(!wifiManager.isWifiEnabled()){ 
       Log.e("wifi is not enabled","Debug"); 
       wifiManager.setWifiEnabled(true); 
      } 

      Log.e("after wifi manager of connect","Debug"); 
      List<ScanResult>results =null; 
      Log.e("after scan result = null","Debug"); 
      while(!wifiManager.isWifiEnabled()) 
      { 
       Log.e("wifi still off","Debug"); 
      } 
      Log.e("wifi is on","Debug"); 
      Log.e("starting scan","Debug"); 
      wifiManager.startScan(); 


      Log.e("waiting","Debug"); 
      if(results1!=null && !results1.isEmpty()) 
      { 
       Log.e("Results1 is not emplty","Debug"); 
      } 
    } 
    @Override 
     public void onStop() 
     { 
      unregisterReceiver(receiver); 
     } 
    public void onCreate(Bundle savedInstanceState) { 
      final Context contex = this; 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    if(receiver == null){ 
       Log.e("Registering reciver","mark"); 
       receiver = new BroadcastReceiver(){ 
        @Override 
        public void onReceive(Context context, Intent intent){ 
         Log.e("In broad cast reciver","mark"); 
         results1 =wifiManager.getScanResults(); 
        } 
       }; 
       registerReceiver(receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 

      } 
    } 
if (!mWifi.isConnected()) { 
AlertDialog.Builder alert = new AlertDialog.Builder(this); 
      alert.setTitle("Please Open the Wifi"); 
      alert.setMessage("Your Wifi is Currently Turned off, Would You like to turn it on?"); 
      alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        //WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
        if(connectToMobinilNetworK()) 
        { 
         AfterWifiIsOn(); 
        } 
        else{ 
         Intent intent = new Intent(contex, ErrorPage.class); 
         startActivity(intent);} 
       } 
      }); 
      alert.setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        Intent intent = new Intent(contex, ErrorPage.class); 
        startActivity(intent); 
       } 
      }); 
      alert.show(); 
     } } 
} 
    } 
The list of scan resutls are always empty and the logs inside the broadcast receiver is not written. 
Thanks in advance. 

ответ

0

У вас есть правильные разрешения, установленный в вашем AndroidManifest? Согласно this guide, ваши разрешения должны выглядеть примерно так:

<uses-sdk android:minSdkVersion="14" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

Да, я включил все эти разрешения – user1928473

Смежные вопросы