You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android实现单按钮多任务:点击battery-saver按钮关闭WIFI与BLUETOOTH

实现单个按钮执行多项任务(关闭WiFi和蓝牙)

没问题,这在Android里实现起来很简单~核心思路就是给你的battery-saver按钮绑定点击监听器,在回调方法里依次执行关闭WiFi和蓝牙的逻辑就行。下面我一步步给你代码和关键说明:

第一步:添加必要权限

首先得在AndroidManifest.xml里声明操作WiFi和蓝牙需要的权限,不同Android版本的权限要求略有差异,直接复制下面的代码到你的清单文件里:

<!-- 关闭WiFi所需权限 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<!-- 蓝牙相关权限 -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- Android 12及以上版本需要额外添加 -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

第二步:编写按钮点击逻辑

假设你的按钮在布局文件里的id是@+id/battery_saver(注意XML里id不能用连字符,如果你之前写的是battery-saver,记得改成下划线形式battery_saver),然后在对应的Activity或Fragment里实现点击逻辑:

Java版本

import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

        // 找到按钮并设置点击监听器
        Button batterySaverBtn = findViewById(R.id.battery_saver);
        batterySaverBtn.setOnClickListener(v -> {
            // 依次执行关闭WiFi和蓝牙的操作
            closeWifi();
            closeBluetooth();
        });
    }

    // 关闭WiFi的方法
    private void closeWifi() {
        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        // 先判断WiFi是否开启,避免无效操作
        if (wifiManager != null && wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(false);
        }
    }

    // 关闭蓝牙的方法
    private void closeBluetooth() {
        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        // 先判断设备是否支持蓝牙,以及蓝牙是否开启
        if (bluetoothAdapter != null && bluetoothAdapter.isEnabled()) {
            bluetoothAdapter.disable();
        }
    }
}

Kotlin版本

如果你的项目用的是Kotlin,这里也给你对应的实现:

import android.bluetooth.BluetoothAdapter
import android.content.Context
import android.net.wifi.WifiManager
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val batterySaverBtn = findViewById<Button>(R.id.battery_saver)
        batterySaverBtn.setOnClickListener {
            closeWifi()
            closeBluetooth()
        }
    }

    private fun closeWifi() {
        val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        if (wifiManager.isWifiEnabled) {
            wifiManager.isWifiEnabled = false
        }
    }

    private fun closeBluetooth() {
        val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
        if (bluetoothAdapter != null && bluetoothAdapter.isEnabled) {
            bluetoothAdapter.disable()
        }
    }
}

关键注意事项

  • 权限动态申请:如果你的应用目标SDK是Android 12(API 31)及以上,BLUETOOTH_CONNECT权限需要动态申请,否则蓝牙关闭操作会失败。你可以在启动Activity时先检查并申请这个权限。
  • 空指针防护:判断WifiManager和BluetoothAdapter是否为null,避免因设备不支持相关功能导致崩溃。
  • 状态判断:在执行关闭操作前先检查当前状态,避免重复执行无效操作,提升用户体验。

内容的提问来源于stack exchange,提问作者Rajat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:51:01