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

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

  • 判断热点是否打开
  • 跳转手机热点开关页面
    • 顺带介绍一些其他常用的设置页面跳转
  • 其他热点的一些相关知识
    • Local-only hotspot
  • 参考

在这里插入图片描述

判断热点是否打开

网上方法比较多,我这边使用了通过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 fromWi-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 onprecise 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/83818.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow-红包题第二弹

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 同样&#xff0c;先看一下有没有注释的内容&#xff0c;可以看到有一个cmd的入参 执行之后可以看到文件代码&#xff0c;可以看到也是eval&#xff0c;但是中间对大部分的字符串都进行了过滤&#xff0c;留下了…

2023年03月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:和数 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 时间限制:10000 内存限制:65536 输入 共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个…

【Go语言】基于Socket编程的P2P通信程序示例

Go语言的Socket编程实现为开发者提供了一种高效且强大的方式来实现网络通信。通过Go语言的并发模型和内置的网络库&#xff0c;如net包&#xff0c;开发者可以轻松地创建基于套接字的通信应用。Go语言的goroutine和channel机制使并发处理变得简单&#xff0c;能够轻松处理多个连…

java八股文面试[java基础]——异常

自定义异常&#xff1a; 异常Exception 是指程序运行时&#xff0c; 由于输入错误、网络、程序逻辑等原因导致运行时出现的问题。出现异常时&#xff0c;程序会暂时中断执行&#xff0c;并根据产生异常的原因&#xff0c;创建对应异常类型的异常对象&#xff0c;并抛出给JVM捕…

C++笔记之设计模式:setter函数、依赖注入

C笔记之设计模式&#xff1a;setter函数、依赖注入 参考笔记&#xff1a; 1.C笔记之静态成员函数可以在类外部访问私有构造函数吗&#xff1f; 2.C笔记之设计模式&#xff1a;setter函数、依赖注入 3.C笔记之两个类的实例之间传递参数——通过构造函数传递类对象的方法详细探究…

MyBatis入门配置及CURD实现

目录 一、MyBatis简介 1. 什么是 MyBatis ? 2. MyBatis的特性 3. 什么是持久层框架&#xff1f; 二、MyBatis环境配置 2.1 创建maven工程 2.2 导入相关pom依赖 2.3 导入jdbc配置文件 2.4 Mybatis相关插件安装 3.5 Mybatis-cfg.xml 核心配置 2.6 引入Log4j2日志文件…

stm32基于HAL库驱动外部SPI flash制作虚拟U盘

stm32基于HAL库驱动外部SPI flash制作虚拟U盘 &#x1f4cc;参考文章&#xff1a;https://xiaozhuanlan.com/topic/6058234791&#x1f39e;实现效果演示&#xff1a; &#x1f516;上图中的读到的FLASH_ID所指的是针对不同容量&#xff0c;所对应的ID。 //W25X/Q不同容量对应…

Docker安装ES+kibana8.9.1

参考&#xff1a;基于Docker安装Elasticsearch【保姆级教程、内含图解】_docker elasticsearch_Acloasia的博客-CSDN博客 创建网络 docker network create es-net 基于Docker安装Elasticsearch 拉取镜像 docker pull elasticsearch:8.9.1 挂载文件 mkdir -p /usr/local/e…

ubuntu下自启动设置,为了开机自启动launch文件

1、书写sh脚本文件 每隔5秒钟启动一个launch文件&#xff0c;也可以直接在一个launch文件中启动多个&#xff0c;这里为了确保启动顺利&#xff0c;添加了一些延时 #! /bin/bash ### BEGIN INIT sleep 5 gnome-terminal -- bash -c "source /opt/ros/melodic/setup.bash…

c语言每日一练(11)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…

Jira vs Trello:项目管理的深层巅峰对决

引言 项目管理在现代企业运作中起着至关重要的作用。从跨国公司的巨大项目&#xff0c;到创业公司的快速反应&#xff0c;再到个人的日常任务管理&#xff0c;一个好的项目管理工具可以有效地跟踪进度&#xff0c;优化资源分配&#xff0c;确保项目在预定时间内完成。今天&…

【C++杂货铺】探索vector的底层实现

文章目录 一、STL1.1 什么是STL?1.2 STL的版本1.3 STL的六大组件 二、vector的介绍及使用2.1 vector的介绍2.2 vector的使用2.2.1 vector的定义2.2.2 vector iterator2.2.3 vector空间增长问题2.2.4 vector增删查改 2.3 vector\<char\> 可以替代 string 嘛&#xff1f; …