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以上相关推荐

  1. android开启热点softap模式,[RK3288][Android6.0] Wifi开启热点(SoftAP)流程小结

    Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 在Settings中选择要打开wifi热点功能: 调用流程如下: onPreferenceChan ...

  2. Android开启热点后作为路由器,获取AP端IP地址

    最近在做类似面对面通信,需要一台手机作为AP端开启热点,另一台手机作为STA端连接热点,然后AP端告诉STA端它的IP地址,进行socket通信. 手机在联网时,就会被分配一个IP地址,它在开启热点时 ...

  3. android udp 广播通信,Android开启热点进行UDP通信中的坑

    1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...

  4. wifi udp android,Android开启热点进行UDP通信中的坑

    1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...

  5. 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 ...

  6. Android 8.0 学习(24)---Android8.0 WiFi热点适配

    Android8.0 WiFi热点适配 在Android8.0上用以前的方式调试WiFi热点的时候发现无法正常开启热点,于是查了下,发现之前的热点打开接口已经废弃.原先的接口WifiManager.j ...

  7. 关于Android 8.0开启热点(HotSpot)

    关于Android 8.0开启热点(HotSpot) 开启热点(Android 8.0) 关闭热点(Android 8.0) 第一种方法: 第二种方法: 注意事项: 问题1: 解决: 问题2: 解决: ...

  8. Android 系统(98)---Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)

    Android app 在线更新那点事儿(适配Android6.0.7.0.8.0) 一.前言 app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新 ...

  9. android自动切换暗色,超实用!Android 深色模式适配(可定时开启的APP内主题切换管理工具)...

    前言 前面分享了一篇"黑白化主题"的文,主要适用场景是不久就要到来的"清明"等时节或者是其他的国家公祭日什么的(一名成熟的程序员,要学会自己提产品需求). 今天 ...

  10. Android简单适配9.0~12.0

    适配6.0~8.0的可以看下这个: 适配Android6.0到8.0详细过程--小白教程 注意:10.0到12.0的都是些网上看到的资料,我就适配到10.0的文件存储,如有不对的,可以留言,我会查阅修 ...

最新文章

  1. 使用javascript oop开发滑动(slide) 菜单控件
  2. 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象编程三大特征 - 多态
  3. python中的seth函数_Python入门——turtle库的使用
  4. Linux学习:文件描述符表
  5. Teams bot的调用限制
  6. Ruby 的环境搭建及安装
  7. LSGO软件技术团队2015~2016学年第五周(0928~1004)总结
  8. 让游戏达到60帧真的重要吗?
  9. java剑指offer_剑指offer题目java实现
  10. c语言资产管理系统,c语言图书资产管理系统.doc
  11. Java小游戏 超级玛丽源码分享
  12. 钢结构节点输出软件_BIM技术助力桥梁钢结构设计施工一体化建设
  13. java freepascal_Free Pascal
  14. mysql数据库建表的作用_浅谈(SQL Server)数据库中系统表的作用
  15. 在CMD中输入adb命令,提示“'adb' 不是内部或外部命令,也不是可运行程序或批处理文件”的解决方法
  16. 金融产业数据治理实践及方法论
  17. Excel如何将商品名称中的商品型号提取出来
  18. 解决FFMPEG错误:height not divisible by 2 / width not divisible by 2
  19. 使用nvm管理node和npm
  20. 华为服务器恢复远程连接的出厂用户名和密码

热门文章

  1. meterpreter使用
  2. 前端--开发“抽屉新热榜”
  3. 揭秘骗术:黑客人肉、查开房的灰色项目
  4. 笔记本电脑分区后怎么恢复?3个方法
  5. vue项目总使用高德API的轨迹展示巡航
  6. youtube打开显示服务器更新,youtube-dl更新出错解决办法
  7. 三人表决器逻辑表达式与非_正则表达式 - 驰念
  8. UnityAction和System.Action引发的思考
  9. 继Python之后,Go也顺利在浏览器上运行
  10. 1005. F.Snowy Roads最小生成树Kruskal算法