由于自动化测试需要,我们希望能够简单的控制Android手机的WIFI开和关,而不是通过UI操作的方式。由于每个Android机型的UI都千差万别,所以需要找到一个通用得方式来满足我们的需求。

最开始我想到了ADB,经查,下面的命令的确可以满足我们的要求,但是需要ROOT:

adb shell svc wifi disable/enable

果断放弃,ROOT这事儿太麻烦,这么多手机我无法每个都ROOT,而且能不能成功都是个大大的问号。

因为之前就有想做Android控制工具集的想法,主要的工作原理是依靠Android本身BroadcastReceiver来接收广播实现控制,这样只要一条命令就可以了:

通过命令行执行adb shell am broadcast发送广播通知。

adb shell am broadcast 后面的参数有:[-a ][-d ][-t ] [-c [-c ] ...] [-e|--es ...] [--ez ...] [-e|--ei ...] [-n ][-f ] []

好了,搞定了该用什么,其他就是实现的工作了(只介绍主要实现)。

首先,先新建一个Android工程,然后在工程里写BroadcastReceiver实现:

package com.xingshulin.xsltestcontroller;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.net.wifi.WifiManager;

import android.util.Log;

public class WifiControllerReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

if (intent.getAction().equals("com.xingshulin.wifiON")) {

wifiManager.setWifiEnabled(true);

Log.i("XSL_Test", "WIFI Enabled!");

} else {

wifiManager.setWifiEnabled(false);

Log.i("XSL_Test", "WIFI disabled!");

}

}

}

灰常简单有没有!其实没几句话就能实现我们的要求了。

接下来别忘了在AndroidManifest.xml添加我们的receiver和权限:

package="com.xingshulin.xsltestcontroller"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="21" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/app_name" >

大家要注意receiver里面的action,这个是可以我们自己定义的,在这里我用com.xingshulin.wifiON和com.xingshulin.wifiOFF分别控制WIFI的开和关。

权限里面WIFI相关的是,这个也一定不能丢:

好了。大功告成,打包装到手机里,打开应用,用下面的命令试验下:

开WIFI

am broadcast -a com.xingshulin.wifiON -n com.xingshulin.xsltestcontroller/.WifiControllerReceiver

关WIFI

am broadcast -a com.xingshulin.wifiOFF -n com.xingshulin.xsltestcontroller/.WifiControllerReceiver

是不是成功的?哈哈,但是在使用时有些点需要注意:

这个命令只有在APP打开时才会起作用,所以做自动化时可以先用 "am start -n ..." 打开应用

第一次运行打开WIFI时手机会要权限,我们可以点击允许并且设置为以后不再询问,这样以后就不会有问题了。

android 屏蔽 广播,Android中使用BroadcastReceiver打开和关闭WIFI相关推荐

  1. Unity Android 之 在 Unity 中直接调用打开其他应用apk的方法实现

    Unity Android 之 在 Unity 中直接调用打开其他应用apk的方法实现 目录 Unity Android 之 在 Unity 中直接调用打开其他应用apk的方法实现 一.简单介绍 二. ...

  2. android 弹出编辑框,Android编程实现的EditText弹出打开和关闭工具类

    本文实例讲述了Android编程实现的EditText弹出打开和关闭工具类.分享给大家供大家参考,具体如下: 需求: 使用代码实现Android的输入框EditText对键盘的关闭弹出的实现. 代码: ...

  3. python中文件的打开与关闭_python中的文件打开与关闭操作命令介绍

    python中的文件打开与关闭操作命令介绍 1.文件打开与关闭 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式). f = open('t ...

  4. android 定位 广播,android - 如何触发广播接收器在GPS开启/关闭? - SO中文参考 - www.soinside.com...

    如何触发广播接收器在GPS开启/关闭? 问题描述 投票:35回答:5 public class BootReceiver extends BroadcastReceiver { @Override p ...

  5. android 受限广播,Android受限广播(protected

    在阅读Android源码Telephony模块时,发现在AndroidManifest.xml文件里声明了大量的protected-broadcast: 'android.intent.action. ...

  6. android 蓝牙 广播,android蓝牙BLE(三) —— 广播

    ​ 在蓝牙开发中,有些情况是不需要连接的,只要外设广播自己的数据即可,例如苹果的ibeacon.自Android 5.0更新蓝牙API后,手机可以作为外设广播数据. 广播包有两种: 广播包(Adver ...

  7. android 输入法如何启动流程_Android程序打开和关闭输入法

    一.打开输入法窗口: /** * 动态显示软键盘 * * @param context 上下文 * @param edit 输入框 */ public static void showSoftInpu ...

  8. usb声卡驱动(六):usb声卡中的pcm打开和关闭

    usb声卡驱动(六) 前面记录了usb声卡驱动的注册过程. 下面,查看usb声卡里面pcm的打开和关闭,都做了什么工作. 一点基础前提 因为本系列文章的核心是,usb声卡驱动.所以并不会深入到alsa ...

  9. C语言中文件的打开和关闭

    1.文件指针 文件在使用时都会在内存中开辟一个相应的文件信息区域来存放信息,这个信息保存在结构体变量中的. 标题 2.文件的打开和关闭 fopen打开文件     fclose关闭文件 #includ ...

最新文章

  1. 为什么面试官总喜欢问String?
  2. 【行业进展】哪些公司在搞“新零售”了
  3. 使用http连接到microsoft exchange_如何使用 PowerShell 连接 Office 365 服务
  4. 保护 ASP.NET Web 部件页面
  5. UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figur
  6. 假如把女生比作一种水果
  7. 福建高职计算机知识点,2013福建高职单招 计算机类专业 知识试题
  8. 获取存储过程返回值及代码中获取返回值(转)
  9. 大数据之-Hadoop伪分布式_配置文件说明---大数据之hadoop工作笔记0029
  10. IntelliJ Idea工作笔记009---代码没有错,但是在IDEA报错的原因
  11. iOS 开发之玩转专场动画
  12. Web Deploy 发布网站错误 检查授权和委派设置
  13. android学习笔记之Fragment(一)
  14. win10 升级导致找不到SQL Server配置管理器
  15. js 定义函数的几种方法 以及如何调用
  16. 在线制作流程,数据库模型,网络架构图,你所不知道的工具使用-Freedgo Design
  17. ASE(Asset Scan Engine)资产扫描器
  18. 第二章 ARM体系结构与指令集——ARM
  19. uchome登陆机制分析(一)
  20. 磁盘的扩展卷和压缩卷显示灰色,无法使用

热门文章

  1. Java 亿万级数据导出到Excel
  2. creo怎么测量点到面的距离
  3. 微软如何开始拥抱Python?
  4. 20210101奥森版玫瑰花
  5. 字体编辑器,让字体设计更加便捷高效
  6. 《ONAP技术详解与应用实践》中奖名单来了!
  7. 使用 jsPDF 创建 PDF 文档
  8. Microsoft Edge是一款现代化的浏览器,它拥有众多功能和强大的性能
  9. 白嫖他悟空CRM项目 ,部署了直接用起来
  10. (照片编辑)7 Best Photo Editing Apps for Android