2013-07-23 2 views
0

Для android 4.2, если требуется не поддерживать одновременное соединение и из кода, я хочу отключить WIFI после того, как включен wifi direct.Android 4.2: отключение Wi-Fi при включенном wifi-подключении

Смогу ли я сделать это с помощью кода (найденного в предыдущем вопросе), например, следующим образом:

WifiManager wifiManager = (WifiManager)this.getSystemService(this.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true);  //True - to enable WIFI connectivity . 
             //False -disable WIFI connectivity. 
+0

Я добавил этот код wifiManager = (WifiManager) mContext.getSystemService (Context.WIFI_SERVICE); и я получил эту ошибку java: 322: несовместимые типы для параметров «getSystemService» .... Какая может быть причина этой ошибки. Пожалуйста, извините мою неопытность в программировании на Android. – user2612554

+0

вы добавили разрешения на использование Wi-Fi в файле манифеста вашего приложения? Если нет, то добавьте этот <использует-разрешение андроид: имя = "android.permission.ACCESS_NETWORK_STATE" /> <использует-разрешение андроид: имя = "android.permission.ACCESS_WIFI_STATE" /> <использует-разрешение андроид : name = "android.permission.CHANGE_WIFI_STATE" /> –

+0

Спасибо Anil, но какой из файлов манифеста я должен добавить тоже? ... его уже в файле AndroidManifest по следующему пути:/development/apps/Development/AndroidManifest .xml ... Этого достаточно? – user2612554

ответ

0

Попробуйте этот код

Button btnWiFi = (Button)findViewById(R.id.btnWiFi); 

     btnWiFi.setOnClickListener(new OnClickListener() { 

      @SuppressWarnings("deprecation") 
      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE); 
       if(wifi.isWifiEnabled()) 
       { 
        Toast.makeText(getBaseContext(), "WiFi is Enabled", Toast.LENGTH_LONG).show(); 

       } 

       else 
       { 
        AlertDialog builder = new AlertDialog.Builder(MainActivity.this).create(); 
        builder.setTitle("Caution"); 
        builder.setMessage("WiFi is Disabled."+"\n"+"Press Ok To Turn On WiFi."); 
        builder.setIcon(R.drawable.caution); 
        builder.setButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(final DialogInterface dialog, final int which) { 
         // Write your code here to execute after dialog closed 
          final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
          wifi.setWifiEnabled(true); 


         } 
       }); 

        builder.setButton2("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 

         } 
       }); 

        builder.show(); 
       } 


      } 
     }); 
+0

Извините, я только что увидел этот код. Спасибо, я попробую это. Поскольку компиляция занимает некоторое время, насколько я понимаю из кода, это то, что я не могу создать экземпляр из WifiManager, кроме как внутри обработчика onClick ?. Или я не должен использовать mContext.getSystemService и сразу использовать getSystemService ... – user2612554

+0

К сожалению, у меня все еще есть следующие ошибки: http://pastebin.com/embed_iframe.php?i=krxYNfhN, и когда я пытался использовать код, который создает экземпляр из wifiManager и использует его для setEnabled с false, я получил следующие ошибки: http://pastebin.com/embed_js.php?i=GDKNkCbM – user2612554

+0

Кто-нибудь :(? .. Я хотел также знать, что важность использования класса Context .... я мог бы вызвать следующую функцию вместо той, которую я ранее использовал mWifiManager = (WifiManager) getSystemService (WIFI_SERVICE); – user2612554

0

Это не возможно!

Wifi Direct позволяет находить одноранговые узлы, подключать и обмениваться информацией, когда соединение WIFI включено и одинаково для всех устройств.

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