Android - 判断 WLAN(WiFi) 是否启用

文章目录


判断 WLAN 是否启用,如果没有,询问用户是否前往开启;否则,告诉用户 WLAN 已经启用。

准备

IDE:

Android Studio 4.1.1
Build #AI-201.8743.12.41.6953283, built on November 5, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

Android Virtual Devices:

Name: Pixel_2_API_28
CPU/ABI: Google Play Intel Atom (x86)
Path: C:\Users\86188\.android\avd\Pixel_2_API_28.avd
Target: google_apis_playstore [Google Play] (API level 28)
Skin: pixel_2
SD Card: 512M
fastboot.chosenSnapshotFile: 
runtime.network.speed: full
hw.accelerometer: yes
hw.device.name: pixel_2
hw.lcd.width: 1080
hw.initialOrientation: Portrait
image.androidVersion.api: 28
tag.id: google_apis_playstore
hw.mainKeys: no
hw.camera.front: emulated
avd.ini.displayname: Pixel 2 API 28
hw.gpu.mode: auto
hw.ramSize: 1536
PlayStore.enabled: true
fastboot.forceColdBoot: no
hw.cpu.ncore: 4
hw.keyboard: yes
hw.sensors.proximity: yes
hw.dPad: no
hw.lcd.height: 1920
vm.heapSize: 256
skin.dynamic: yes
hw.device.manufacturer: Google
hw.gps: yes
hw.audioInput: yes
image.sysdir.1: system-images\android-28\google_apis_playstore\x86\
showDeviceFrame: yes
hw.camera.back: virtualscene
AvdId: Pixel_2_API_28
hw.lcd.density: 420
hw.arc: false
hw.device.hash2: MD5:55acbc835978f326788ed66a5cd4c9a7
fastboot.forceChosenSnapshotBoot: no
fastboot.forceFastBoot: yes
hw.trackBall: no
hw.battery: yes
hw.sdCard: yes
tag.display: Google Play
runtime.network.latency: none
disk.dataPartition.size: 6442450944
hw.sensors.orientation: yes
avd.ini.encoding: UTF-8
hw.gpu.enabled: yes

注意:以下示例仅在安卓虚拟设备上运行测试,并没有在真实的设备上运行测试。

项目

  1. 新建项目,选择 Empty Activity,在配置项目时,我选择的 Minimum SDKAPI 16: Android 4.1 (Jelly Bean)

  2. 编辑 src\main\AndroidManifest.xml 清单文件,添加 ACCESS_WIFI_STATE 权限(第 7 行):

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.mk">
    
        <!-- https://developer.android.google.cn/reference/android/Manifest.permission?hl=zh-cn#ACCESS_WIFI_STATE-->
        <!-- Allows applications to access information about Wi-Fi networks.-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    
        ... 其他,略
    
    </manifest>
    
  3. 编辑 src\main\res\layout\activity_main.xml 文件,删除原有的 TextView 元素,新增 Button 元素:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:text="Button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    
  4. 编辑 MainActivity 文件:

    第 40 行:检测 WLAN 是否启用

    第 52 ~ 58 行:询问用户是否前往开启 WLAN

    package com.mk;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.provider.Settings;
    import android.view.View;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
          
          
    
        private Context context = this;
    
        private Button button = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
          
          
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initView();
        }
    
        private void initView() {
          
          
            button = (Button) findViewById(R.id.button);
    
            button.setOnClickListener(new View.OnClickListener() {
          
          
                @Override
                public void onClick(View v) {
          
          
                    // 检测 WLAN 是否启用,如果没有,提示用户前往启用
                    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                    if (wifiManager == null || !wifiManager.isWifiEnabled()) {
          
           // 检测 WLAN  是否启用
                        AlertDialog.Builder builder = new AlertDialog.Builder(context);
                        AlertDialog alertDialog = builder
                                .setTitle("提示")
                                .setMessage("前往打开 WLAN?")
                                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
          
          
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
          
          }
                                })
                                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
          
          
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
          
          
                                        Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
                                        // https://developer.android.google.cn/guide/components/intents-filters?hl=zh-cn#ExampleSend
                                        // https://developer.android.google.cn/reference/android/content/Intent?hl=zh-cn#resolveActivity(android.content.pm.PackageManager)
                                        // 判断是否有合适的应用能够处理该 Intent,并且可以安全调用 startActivity()。
                                        if (intent.resolveActivity(getPackageManager()) != null) {
          
          
                                            startActivity(intent);
                                        }
                                    }
                                })
                                .create();
    
                        alertDialog.show();
    
                        // 修改确定按钮的左边距
                        Button buttonPositive = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                        LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) buttonPositive.getLayoutParams();
                        layoutParams.setMargins(layoutParams.leftMargin + 20, layoutParams.topMargin, layoutParams.rightMargin, layoutParams.bottomMargin);
                        buttonPositive.setLayoutParams(layoutParams);
                    } else {
          
          
                        Toast.makeText(context, "WLAN 已经启用", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
    
  5. 运行效果:

    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_29761395/article/details/113436589