Android 开启热点 适配8.0以上
Android 开启热点 获取热点 名和密码 适配Android O及以上
Android 开启热点
1.高于Android8.0 开启热点
下面展示一些 内联代码片
。
@RequiresApi(api = Build.VERSION_CODES.O)private void openApSystemO(final Callbak callbak) {if (isApOpen()) {if (!TextUtils.isEmpty(sid) && !TextUtils.isEmpty(pwd)) {callbak.onConnected("", sid, pwd);return;}//如果是自己开的可以关closeAp();}//关不掉,让用户关if (isApOpen()) {Log.e("TAG","热点关闭失败");callbak.onConnected("close wifi ap first please", null, null);return;}getWifiMgr().startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback() {@Overridepublic void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {mReservation = reservation;sid = reservation.getWifiConfiguration().SSID;pwd = reservation.getWifiConfiguration().preSharedKey;callbak.onConnected("", sid, pwd);}@Overridepublic void onStopped() {mReservation = null;sid = "";pwd = "";}@Overridepublic void onFailed(int reason) {sid = "";pwd = "";callbak.onConnected("wifi ap is failed to open", null, null);}}, new Handler());}
2.低于Android8.0 开启热点
下面展示一些 内联代码片
。
private void openApBelow8(Callbak callbak) {if (getWifiMgr().isWifiEnabled()) {//如果wifi处于打开状态,则关闭wifi,getWifiMgr().setWifiEnabled(false);}if (isApOpen()) {sid = getApSSID();pwd = getApPassword();if (!TextUtils.isEmpty(sid) && !TextUtils.isEmpty(pwd)) {callbak.onConnected("", sid, pwd);return;} else {sid = "";pwd = "";}}WifiConfiguration config = new WifiConfiguration();config.SSID = "Scan-Wifi";config.preSharedKey = "Scan-Wifi@233";config.hiddenSSID = false;//是否隐藏网络config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);//开放系统认证config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);config.status = WifiConfiguration.Status.ENABLED;try {Method method = getWifiMgr().getClass().getMethod("setWifiApEnabled",WifiConfiguration.class, Boolean.TYPE);Boolean result = (Boolean) method.invoke(getWifiMgr(), config, true);if (UText.isTrue(result)) {sid = "Scan-Wifi";pwd = "Scan-Wifi@233";callbak.onConnected("", sid, pwd);} else {sid = "";pwd = "";callbak.onConnected("wifi ap is failed to open", null, null);}} catch (Exception e) {sid = "";pwd = "";callbak.onConnected("wifi ap is failed to open", null, null);}}
3.热点是否打开 {@code true} 打开
public boolean isApOpen() {try {//反射获取 getWifiApState()方法Method method = getWifiMgr().getClass().getDeclaredMethod("isWifiApEnabled");method.setAccessible(true);return (boolean) method.invoke(getWifiMgr());} catch (Throwable ignored) {return false;}}
4.关闭热点
public void closeAp() {try {if (isSystemO()) {if (mReservation != null) {mReservation.close();mReservation = null;}} else {Method method = getWifiMgr().getClass().getMethod("setWifiApEnabled",WifiConfiguration.class, boolean.class);method.invoke(getWifiMgr(), null, false);}} catch (Exception ignored) {}}
亲测Android10.0 和Android6.0
代码下载地址:https://download.csdn.net/download/qq_34754268/22910187添加链接描述
Android 开启热点 适配8.0以上相关推荐
- android开启热点softap模式,[RK3288][Android6.0] Wifi开启热点(SoftAP)流程小结
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 在Settings中选择要打开wifi热点功能: 调用流程如下: onPreferenceChan ...
- Android开启热点后作为路由器,获取AP端IP地址
最近在做类似面对面通信,需要一台手机作为AP端开启热点,另一台手机作为STA端连接热点,然后AP端告诉STA端它的IP地址,进行socket通信. 手机在联网时,就会被分配一个IP地址,它在开启热点时 ...
- android udp 广播通信,Android开启热点进行UDP通信中的坑
1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...
- wifi udp android,Android开启热点进行UDP通信中的坑
1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...
- ZUI易入门Android之客户端适配9.0方案
目录 Section 1: 前言 1-4 1 概念 1-4 2 读者 1-4 3 参考文档 1-4 Section 2: 技术方案 2-5 1 所有应用的行为变更 2-5 1.1 非SDK开放接口 2 ...
- Android 8.0 学习(24)---Android8.0 WiFi热点适配
Android8.0 WiFi热点适配 在Android8.0上用以前的方式调试WiFi热点的时候发现无法正常开启热点,于是查了下,发现之前的热点打开接口已经废弃.原先的接口WifiManager.j ...
- 关于Android 8.0开启热点(HotSpot)
关于Android 8.0开启热点(HotSpot) 开启热点(Android 8.0) 关闭热点(Android 8.0) 第一种方法: 第二种方法: 注意事项: 问题1: 解决: 问题2: 解决: ...
- Android 系统(98)---Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
Android app 在线更新那点事儿(适配Android6.0.7.0.8.0) 一.前言 app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新 ...
- android自动切换暗色,超实用!Android 深色模式适配(可定时开启的APP内主题切换管理工具)...
前言 前面分享了一篇"黑白化主题"的文,主要适用场景是不久就要到来的"清明"等时节或者是其他的国家公祭日什么的(一名成熟的程序员,要学会自己提产品需求). 今天 ...
- Android简单适配9.0~12.0
适配6.0~8.0的可以看下这个: 适配Android6.0到8.0详细过程--小白教程 注意:10.0到12.0的都是些网上看到的资料,我就适配到10.0的文件存储,如有不对的,可以留言,我会查阅修 ...
最新文章
- 使用javascript oop开发滑动(slide) 菜单控件
- 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象编程三大特征 - 多态
- python中的seth函数_Python入门——turtle库的使用
- Linux学习:文件描述符表
- Teams bot的调用限制
- Ruby 的环境搭建及安装
- LSGO软件技术团队2015~2016学年第五周(0928~1004)总结
- 让游戏达到60帧真的重要吗?
- java剑指offer_剑指offer题目java实现
- c语言资产管理系统,c语言图书资产管理系统.doc
- Java小游戏 超级玛丽源码分享
- 钢结构节点输出软件_BIM技术助力桥梁钢结构设计施工一体化建设
- java freepascal_Free Pascal
- mysql数据库建表的作用_浅谈(SQL Server)数据库中系统表的作用
- 在CMD中输入adb命令,提示“'adb' 不是内部或外部命令,也不是可运行程序或批处理文件”的解决方法
- 金融产业数据治理实践及方法论
- Excel如何将商品名称中的商品型号提取出来
- 解决FFMPEG错误:height not divisible by 2 / width not divisible by 2
- 使用nvm管理node和npm
- 华为服务器恢复远程连接的出厂用户名和密码