【问题标题】:How to enable/disable WiFi from an application?如何从应用程序启用/禁用 WiFi?
【发布时间】:2011-08-06 04:05:06
【问题描述】:

我想从我的 Android 应用程序中启用/禁用 wifi。我该怎么做?

【问题讨论】:

    标签: java android kotlin wifi android-wifi


    【解决方案1】:
    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    wifi.setWifiEnabled(false); // true or false to activate/deactivate wifi
    

    您还需要在您的 AndroidManifest.xml 中请求权限:

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    

    【讨论】:

    • 是的,别忘了在你的 manifest android.permission.CHANGE_WIFI_STATE 中添加使用权限
    • @Codii,我知道这很旧,但我试图在对话片段中执行此操作。但是,它说“无法解析方法'getSystemService(java.lang.String)'我不确定我需要做什么。而且我有这些权限
    • 为我工作谢谢你可以检查wifi,如果启用使用false,如果禁用使用true
    【解决方案2】:

    要在您的应用程序中启用/禁用 WiFi,您需要使用 WiFiManager 类。创建 WiFiManager 类的 Object,获取 WiFi 的服务。

    WifiManager wifi;
    wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
    
    wifi.setWifiEnabled(false);//Turn off Wifi
    
    wifi.setWifiEnabled(true);//Turn on Wifi
    

    而且你必须在 AndroidManifest.xml 中加入以下权限

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
    
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    要获得在android中使用UI启用/禁用Wifi的完整示例代码,请访问this website

    【讨论】:

    • 这是一个更完整的答案。包括所有必需的权限。
    • 当我在我的项目中这样做时,但是当这些代码被执行时,系统会提示说应用程序正在尝试使用wlan是否允许它。而且每次都会出现!我可以在没有提示窗口的情况下启用 wlan 吗?
    【解决方案3】:

    试试这个代码

     Intent gpsOptionsIntent = new Intent(  android.provider.Settings.ACTION_WIFI_SETTINGS);  
                startActivityForResult(gpsOptionsIntent,0); 
    

    【讨论】:

    • 谢谢,但我不想打开设置。我想直接从我的应用禁用或启用。
    【解决方案4】:

    试试这个

    public void disableWifi(Context context, Boolean bool) {
        WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    
        if(bool)
            wifi.setWifiEnabled(false);
        else
            wifi.setWifiEnabled(true);
    }
    

    【讨论】:

    • 虽然这可能会回答这个问题,但也应该解释一下如何以及为什么。
    【解决方案5】:

    要从 Android Q (Android 10) 中的应用启用/禁用 wifi,请使用 设置面板

    val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 0)
    

    在以前的 Android 版本上,这应该可以工作(应将适当的权限添加到 AndroidManifest 文件中,请参阅上面的答案):

    (context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
    

    生成的代码可能如下所示:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
        startActivityForResult(panelIntent, 0)
    } else {
        (context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
    }
    

    其中context 是对android.content.Context 对象的引用。

    【讨论】:

      【解决方案6】:
      public class MainActivity extends AppCompatActivity {
      
          Switch btn;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              btn = (Switch) findViewById(R.id.switch1);
              btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                      if (isChecked) {
                          toggleWiFi(true);
                          Toast.makeText(getApplicationContext(), "Wi-Fi Enabled!", Toast.LENGTH_LONG).show();
                      } else {
                          toggleWiFi(false);
                          Toast.makeText(getApplicationContext(), "Wi-Fi Disabled!", Toast.LENGTH_LONG).show();
                      }
                  }
              });
          }
      
          public void toggleWiFi(boolean status){
              WifiManager wifiManager = (WifiManager)this.getSystemService(WIFI_SERVICE);
              if (status && !wifiManager.isWifiEnabled()) {
                  wifiManager.setWifiEnabled(true);
              } else if (!status && wifiManager.isWifiEnabled()) {
                  wifiManager.setWifiEnabled(false);
              }
          }
      }
      

      在清单文件中添加用户权限

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        相关资源
        最近更新 更多