Android kotlin 跳转手机热点开关页面和判断热点是否打开(亲测可用)

 更新时间:2023年08月22日 16:32:26   作者:我怀里的猫  
跳转手机热点的页面肯定是用intent,重点是action不知道是什么,网上最常见的就是Settings.ACTION_WIFI_SETTINGS 跳转wifi设置页面,本文介绍Android kotlin 跳转手机热点开关页面和判断热点是否打开,感兴趣的朋友一起看看吧

判断热点是否打开

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

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层可能更改名称,所以要做好准备

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。

<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中的

public void startLocalOnlyHotspot (WifiManager.LocalOnlyHotspotCallback callback, 
                Handler handler)

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

参考

安卓官网WifiManager

到此这篇关于Android kotlin 跳转手机热点开关页面和判断热点是否打开的文章就介绍到这了,更多相关Android kotlin 跳转手机热点开关页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android开发实现广告无限循环功能示例

    Android开发实现广告无限循环功能示例

    这篇文章主要介绍了Android开发实现广告无限循环功能,结合完整实例形式分析了Android广告图片轮播功能的具体实现步骤与相关功能、布局等操作技巧,需要的朋友可以参考下
    2017-11-11
  • android实现数独游戏机器人

    android实现数独游戏机器人

    这篇文章主要为大家详细介绍了android实现数独游戏机器人,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Android实现2048小游戏

    Android实现2048小游戏

    这篇文章主要为大家介绍了Android实现2048小游戏的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android UI组件AppWidget控件入门详解

    Android UI组件AppWidget控件入门详解

    这篇文章主要介绍了Android UI组件AppWidget控件入门,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android Flutter实现原理浅析

    Android Flutter实现原理浅析

    这篇文章主要介绍了Android Flutter的实现原理是怎么样的,flutter可以说是当下最流行的跨平台技术了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Android组件初始化三种方式小结

    Android组件初始化三种方式小结

    在Android中,组件的初始化通常需要在适当的生命周期方法中进行,本文给大家详细的介绍了初始化的三种方式,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2023-08-08
  • android2.3.5 CDMA/EVDO拨号APN解决方案

    android2.3.5 CDMA/EVDO拨号APN解决方案

    google提供的android2.3里面,只能在GSM/WCDMA情况下才能从“设置”->“无线和网络”->“移动网络”->“接入点名称”中选择不同的apn帐号进行拨号连接,而CDMA/EVDO则没有这个功能,接下来本文介绍一些方法实现这个功能,感兴趣的朋友可以了解下
    2013-01-01
  • Android NestedScrolling嵌套滚动的示例代码

    Android NestedScrolling嵌套滚动的示例代码

    这篇文章主要介绍了Android NestedScrolling嵌套滚动的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android仿淘宝首页头条View垂直滚动效果

    Android仿淘宝首页头条View垂直滚动效果

    这篇文章主要为大家详细介绍了Android仿淘宝首页头条View垂直滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android使用AsyncTask下载图片并显示进度条功能

    Android使用AsyncTask下载图片并显示进度条功能

    这篇文章主要介绍了Android使用AsyncTask下载图片并显示进度条功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02

最新评论