Android kotlin 跳转手机热点开关页面和判断热点是否打开

Android kotlin 跳转手机热点开关页面和判断热点是否打开

判断热点是否打开

网上方法比较多,我这边使用了通过WifiManager 拿反射的getWifiApState方法获取判断,亲测可用,最近迷上了扩展方法【dog】

kotlin 复制代码
fun Activity.isWifiApOpen(): Boolean {
    try {
        val manager = this.getSystemService(Context.WIFI_SERVICE) as WifiManager
        //通过放射获取 getWifiApState()方法
        val method = manager.javaClass.getDeclaredMethod("getWifiApState")
        //调用getWifiApState() ,获取返回值
        val state = method.invoke(manager) as Int
        //通过放射获取 WIFI_AP的开启状态属性
        val field: Field = manager.javaClass.getDeclaredField("WIFI_AP_STATE_ENABLED")
        //获取属性值
        val value = field.get(manager) as Int
        //判断是否开启
        return state == value
    } catch (e: NoSuchMethodException) {
        e.printStackTrace()
    } catch (e: IllegalAccessException) {
        e.printStackTrace()
    } catch (e: InvocationTargetException) {
        e.printStackTrace()
    } catch (e: NoSuchFieldException) {
        e.printStackTrace()
    }
    return false
}

跳转手机热点开关页面

跳转手机热点的页面肯定是用intent,重点是action不知道是什么,网上最常见的就是Settings.ACTION_WIFI_SETTINGS 跳转wifi设置页面,费了一番力气,同样写为扩展方法,我试过是可以跳转热点设置页面的

值得注意的是,在部分机型或特殊情况下可能会没有这个activity,因为framework层可能更改名称,所以要做好准备

kotlin 复制代码
fun Activity.startWifiActivity(){
    val intent = Intent(Settings.ACTION_WIRELESS_SETTINGS)
    this.startActivity(intent)
}

顺带介绍一些其他常用的设置页面跳转

同样在部分机型或特殊情况下可能会没有这个activity,得自己试试

  • ACTION_SETTINGS

    顾名思义 跳转到系统设置页面

  • ACTION_APN_SETTINGS

    跳转 APN设置界面

  • ACTION_LOCATION_SOURCE_SETTINGS

    跳转位置服务界面(管理已安装的应用程序)

  • ACTION_AIRPLANE_MODE_SETTINGS

    跳转飞行模式设置页面

  • ACTION_APPLICATION_DEVELOPMENT_SETTINGS

    跳转开发者选项页面

  • ACTION_APPLICATION_SETTINGS

    跳转应用程序列表界面

  • ACTION_BLUETOOTH_SETTINGS

    跳转蓝牙设置页面

其他热点的一些相关知识

如果你的热点不需要联网,可以使用Local-only hotspot

Local-only hotspot

Local-only hotspot 通过配置local-only热点,连接到Wi-Fi热点的设备上的应用可以相互通信。用这种方法创建的网络将不能访问Internet。每个应用程序只能对热点进行一次请求,但多个应用程序可以同时请求热点。当多个应用程序成功并发注册时,它们共享底层热点。onstarted (localonlyhotspotrevation)在热点准备就绪时被调用。

如果我们的应用程序针对Android 13 (API级别33)或更高版本,则必须请求NEARBY_WIFI_DEVICES使用仅限本地的热点,如下面的代码片段所示。针对较早版本Android的应用必须请求ACCESS_FINE_LOCATION。

kotlin 复制代码
<manifest ...>
    <<!-- If your app targets Android 13 (API level 33)
          or higher, you must declare the NEARBY_WIFI_DEVICES permission. -->
    <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
                     <!-- If your app derives location information from
                          Wi-Fi APIs, don't include the "usesPermissionFlags"
                          attribute. -->
                     android:usesPermissionFlags="neverForLocation" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
                     <!-- If any feature in your app relies on
                          precise location information, don't include the
                          "maxSdkVersion" attribute. -->
                     android:maxSdkVersion="32" />
    <application ...>
        ...
    </application>
</manifest>

对应方法

WifiManager中的

java 复制代码
public void startLocalOnlyHotspot (WifiManager.LocalOnlyHotspotCallback callback, 
                Handler handler)

可以同时连多个,开启失败在callback中会有回调

参考

安卓官网WifiManager

相关推荐
安卓修改大师1 小时前
安卓修改大师 vs MT管理器:反编译工具终极对决与全景解析
android·人工智能·机器翻译
程序员小八7772 小时前
从 0 学习 MySQL 索引——7 大核心精讲
android·学习·mysql
LDyun_3 小时前
.2026主流云手机测评,8款机型高压挂机实测
ios·智能手机·安卓·玩游戏
蓝速科技3 小时前
蓝速科技鸿蒙广告机替代安卓实测:信创系统下的性能与边界评估
android·科技·harmonyos
雅客李3 小时前
2026云手机高负载压力测评 安卓云手机多开实测数据
android·智能手机·php
私人珍藏库4 小时前
[Android] SimpleLive-聚合抖B虎鱼网络直播
智能手机·app·工具·软件·多功能
千里马学框架5 小时前
google官方Perfetto 中使用 AI相关skill
android·人工智能·ai·framework·perfetto·性能·skill
私人珍藏库5 小时前
[Android] 抖音短视频 手表版-适配手机 极简体积无广告
智能手机·app·工具·软件·多功能
zhangphil7 小时前
Android RecyclerView图像类ViewHolder离屏缓存数量直接增加Java/View对象内存,间接增加Graphics/GL内存
android
众少成多积小致巨7 小时前
Android C++ 编码规范指南
android·c++·google