【uni-app】基于uni-app的Android离线打包,wifi物联网
背景:公司有款产品内置wifi模块,需要Android端提供接口供前端uni-app去调用。主要功能分为开启wifi、关闭wifi、连接wifi。
重点:以下会涉及Android10以下以及Android10(包括harmony系统)以上的连接方法。
记得在配置文件中声明权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
1.首先判断有没有开启wifi,未开启则提示开启(同)
//判断wifi开启和关闭public boolean isWifi() {WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);if(wifiManager.isWifiEnabled()) {return true;} else {return false;}}
2.开启连接指定的目标wifi(异)
(1)Android10以下连接方法,首先获取前端传入的两个参数,分别是wifi名称和wifi密码
//Android 10 以下版本wifi连接public boolean linkWifi(String ssid, String pass) {WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);WifiConfiguration conf = new WifiConfiguration();//如果有连接隐藏wifi需求的话,增加conf.hiddenSSID = true这句代码,加上此句则可以检索到隐藏wifi//conf.hiddenSSID = true;conf.SSID = "\"" + networkSSID + "\"";//对于WPA网络密码采用以下输入方式conf.preSharedKey = "\"" + networkPass + "\"";wifiManager.addNetwork(conf);@SuppressLint("MissingPermission") List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();for (WifiConfiguration i : list) {if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {wifiManager.disconnect();wifiManager.enableNetwork(i.networkId, true);wifiManager.reconnect();break;}}return true;}
(2)Android10以上连接方法(P2P),首先获取前端传入的两个参数,分别是wifi名称和wifi密码
public boolean linkWifi (String ssid, String pass) throws InterruptedException{if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q){NetworkSpecifier specifier =new WifiNetworkSpecifier.Builder().setSsidPattern(new PatternMatcher(ssid, PatternMatcher.PATTERN_PREFIX)).setWpa2Passphrase(pass).build();NetworkRequest request =new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).setNetworkSpecifier(specifier).build();ConnectivityManager connectivityManager = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {@Overridepublic void onAvailable(Network network) {//表示使用该网络connectivityManager.bindProcessToNetwork(network);}@Overridepublic void onUnavailable() {return;}};connectivityManager.requestNetwork(request, networkCallback);// Release the request when done.// connectivityManager.unregisterNetworkCallback(networkCallback);}return true;}
3.断开当前所连接的wifi
@RequiresApi(api = Build.VERSION_CODES.M)public boolean recoverywifi (){//Android 10 以上断开方法if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {ConnectivityManager connectivityManager =(ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);connectivityManager.bindProcessToNetwork(null);WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);wifiManager.disconnect();}else{//Android 10 以下断开方法WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);wifiManager.disconnect();}return true;}
小结:Android10以上的手机调用连接wifi代码的时候都会出现弹窗,需要用户允许才能连接目标wifi,属于正常现象。硬件的配置、手机的性能、信号的强弱都会对连接wifi的速度有影响,所以连接过程中检索转圈属于正常现象。
【uni-app】基于uni-app的Android离线打包,wifi物联网相关推荐
- android没有界面app,Android离线打包 app处于原生界面 切换到桌面再点击app 原生界面被关闭...
Android离线打包环境, 当app打开原生界面时,点击Home键到桌面,然后点击桌面图标打开app,原生界面被关闭,无论原生界面层级多少,都是返回到io.dcloud.PandoraEntry这个 ...
- uni-app项目Android离线打包UrlSchemes设置
UrlSchemes配置 在uni-app项目中,UrlSchemes设置实现被第三方应用调用,主要有两种情况: 一.在线打包 在HBuilderX 中打开uni-app项目的manifest.jso ...
- Android离线打包文档
Android 离线打包过程(包含处理视频) 文章目录 Android 离线打包过程(包含处理视频) 打包前的准备 正文开始 (1)如何生成`keystore` (2)生成签名证书 1.使用`keyt ...
- Uni-app Android 离线打包集成 uni-push(个推)消息推送
转载:Uni-app Android 离线打包集成 uni-push(个推)消息推送 1.首先去官网下载Android离线SDK(下载地址) 2.在下好的SDK中找到aps-release.aar, ...
- 【uniapp项目Android离线打包app教程】
[最近打包移动端Android App,看了很多资料教程,整理了一下,送给有缘人 1.下载Android Studio 打包app需要用到Android Studio,如果没有可以先去下载,按提示安装 ...
- uniapp Android 离线打包之未配置appkey或配置错误
按照官网说明,原生开发者支持DCloud 原生开发者支持网站 uni小程序SDK.App离线打包SDK.原生插件开发https://nativesupport.dcloud.net.cn/AppDoc ...
- android asset jar,android离线打包 可以使用,但总是报错 android_asset/null
按照官网的教程配置了离线打包的项目 https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android 但是总是报错: I/OpenGLRendere ...
- android已停止三星,急,android离线打包程序三星下总报 程序 已停止
解开锁屏后,就看到 图片所示的 程序 已停止的提示框,logcat显示如下 11-27 15:33:33.725: I/AndroidRuntime(24861): VM exiting with r ...
- dcloud进行android离线打包 需要继承io.dcloud.application.DCloudApplication的问题
由于项目中使用到了百度地图,且是H5与原生交互操作,既有H5界面 又存在android的原生界面, 在原生界面中如果要使用百度地图需要在Application类中进行初始化,但是由于DCloud已经有 ...
最新文章
- 变革!建设行业大数据的崛起
- PowerPC中断系统简介(一)
- LightGBM 相关知识理解
- 如何在Java中对Collection对象进行排序?
- Pandas DataFrame 取消科学计数法打印
- 【蓝桥杯嵌入式】【STM32】2_KEYBOARD(主循环扫描+外部中断)
- Python版归并排序算法(附Python程序__name__属性用法演示视频)
- 看懂别人的代码,和自己能写代码是两回事
- [WCF编程]10.操作:请求/应答操作
- Appium自动化测试-iOS
- 计算机应用基础信息素养,计算机应用基础:信息素养+Office 2013办公自动化
- Pandas数据分析第2部分
- 如何对 Excel 中的数据使用 SQL 查询
- FineReport新建数据连接
- 使用Python实现淘宝订单定时付款
- 服务器系统才有卷影副本吗,windows server 2019没有适合具有卷影副本的卷
- 数据库——完整性约束条件
- Java整合jcef
- 华为宣布鸿蒙OS开源
- HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了
热门文章
- xampp安装shopex乱码
- win7 IIS客户端远程服务器端访问配置和部署问题(含泪摸索一周才总结出来的)
- easyui select 标签事件
- github代码行数统计
- 在线编辑Office文档软件——WebOffice,常见问答来帮你!
- 计算关联度矩阵matlab,计算关联度matlab
- RS232 RS485 MODBUS RTU转PROFINET PROFIBUS网关将G120XA变频器接入西门子1500 PROFINET网络配置方法
- 【搞定CAD】经典练习题库解答、此题多解。
- 74HC245 内部结构及作用
- Unity Shader入门精要 第4章 笛卡尔坐标系 读书笔记