我正在构建一个需要通过无线网络进行通信的Android应用程序.问题在于,即使WiFi连接,当WiFi网络上没有连接互联网时,Android会选择使用蜂窝/移动数据.

我已经阅读了许多关于这个问题的帖子,其中很多都涉及生根的设备,但这是不可能的生产应用程序(生根设备不是一个选择).其他解决方案(像我的代码如下)建议使用bindProcessToNetwork(),它完美地在我的Sony Z2上工作,但不是在我测试过的其他设备上(全部运行6.0.1)

private void bindToNetwork() {

final ConnectivityManager connectivityManager = (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkRequest.Builder builder;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

builder = new NetworkRequest.Builder();

//set the transport type do WIFI

builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);

connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {

@Override

public void onAvailable(Network network) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

connectivityManager.bindProcessToNetwork(null);

if (barCodeData.getSsid().contains("screenspace")) {

connectivityManager.bindProcessToNetwork(network);

}

} else {

//This method was deprecated in API level 23

ConnectivityManager.setProcessDefaultNetwork(null);

if (barCodeData.getSsid().contains("screenspace")) {

ConnectivityManager.setProcessDefaultNetwork(network);

}

}

connectivityManager.unregisterNetworkCallback(this);

}

});

}

}

android 强制开启wifi,强制Android使用无网络的Wifi网络相关推荐

  1. android 自动开启调试模式,android user版本默认开启调试模式

    由于项目需要,需要发布版本默认开启调试模式,修改方式如下: 1.开启开发者模式 context.getSharedPreferences(DevelopmentSettings.PREF_FILE,C ...

  2. android中开启线程处理,Android线程与消息处理

    一.实现多线程 1.创建线程 (1)通过Thread创建线程 Thread thread = new Thread(new Runnable(){ @Override public void run( ...

  3. android手机自动化测试,appium自动化测试Android Demo

    1.启动appium上一篇介绍了iOS Demo,此片将开启Android Demo,依然是mac系统,以后会开启Windows系统的. Android Demo开启前,Android配置环境要配置好 ...

  4. android魅族进度条,魅族基于安卓 10 的首个 Flyme 内测版已推送:16s Pro/16s 尝鲜,可强制开启 90Hz 刷新率...

    7 月 21 日消息 据魅族 Flyme 官微消息,基于 Android 10 的 Flyme 首个内测版本已推送. 魅族官方称,本次推送机型为 16s Pro.16s,16th Plus.16th ...

  5. Android 6.0 设备强制要求开启全盘加密

    Android 6.0上大家最不愿意看到的事情发生了,不得不说真是挺悲剧的.现在有外媒报道称,谷歌已经向所有厂商要求,Android 6.0的全盘加密(Full Disk Encryption,即FD ...

  6. 强制开启Android 分区存储 沙盘文件系统

    为了测试Android 11下强制分区存储后的应用兼容问题,这里摸索了下目前的打开方式 1. 在AS里下载API 30的 虚拟机 2. 打开虚拟机,进入首页后,执行 adb shell sm set- ...

  7. 强制开启Android Webview GPU 加速的方法

    强制开启Android Webview GPU 加速的方法 常用方法 浏览器开启GPU加速可以让渲染的性能更好,可以有效的利用硬件的能力来提高页面的绘制帧率.在安卓平台使用webview的场景下,开发 ...

  8. 魅族android n彩蛋,魅族Flyme Android 10首个内测版本已推送 强制开启90Hz彩蛋

    7月21日消息,魅族Flyme based on Android 10 首个内测版本已推送,本次推送机型:16s Pro.16s. 16th Plus.16th目前仍存在异常重启问题未能如期发布,预计 ...

  9. 魅族打开Android彩蛋,魅族 Flyme Android 10 首个内测版本已推送 强制开启 90Hz 彩蛋...

    7 月 21 日消息,魅族 Flyme based on Android 10 首个内测版本已推送,本次推送机型:16s Pro.16s. 16th Plus.16th 目前仍存在异常重启问题未能如期 ...

  10. 魅族android n彩蛋,魅族Flyme Android 10终于发放:强制开启90Hz彩蛋

    7月21日消息,魅族Flyme based on Android 10 首个内测版本已推送,本次推送机型:16s Pro.16s. 16th Plus.16th目前仍存在异常重启问题未能如期发布,预计 ...

最新文章

  1. 三元组损失 Triplet Loss及其梯度
  2. 查找内存泄漏的一个思路
  3. java consumer.poll_kafka消费者API consumer.poll()没有错误,没有异常,只是阻止
  4. (37)Verilog HDL拼接运算:拼接操作与重复操作
  5. mediamind SyncAds
  6. blockquote标签、q标签
  7. 山东省农村信用计算机社考试,山东省农村信用社计算机专业考试题
  8. SEO大神: 百度快速SEO之网站标题怎么取
  9. 常见html5营销类型有哪些,常见的品牌营销都有哪几种形式
  10. 小程序为什么有的方法要写在methods,有的可直接写在page下
  11. win10 android 传多个文件夹,Win10使用ROBOCOPY快速复制多个文件夹的操作方法
  12. 司空见惯 - 天黑请闭眼
  13. 显示器支架什么品牌好?
  14. 【网络游戏植入营销案例】
  15. 蒙特卡罗MCNP学习汇总(二)--几何体基础,构建几何体
  16. WS小世界网络构建实验(Matlab版)
  17. Socket 网络协议 等
  18. 计算1+3+5+....+99的和
  19. 2021.2.6课程摘要(逻辑教育-王劲胜)
  20. 物流供应链系统运作原理,物流供应链管理系统优化布局

热门文章

  1. 使用Graham扫描法获取一个平面点集的凸包
  2. win10如何共享整个D盘
  3. Python|自制二维码生成器
  4. Debug下正常运行,但调成Release时遇到三个问题及其完美解决!
  5. [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构
  6. 纯干货-17 分布式深度学习原理、算法详细介绍
  7. 利用MATLAB求系统响应
  8. QQ空间点赞...取消点赞
  9. vue 打包之后不兼容ie_vue项目打包后在IE浏览器报错,页面显示空白
  10. 计算机科学与技术专业教学计划表