导航:首页 > 操作系统 > android监控网络连接

android监控网络连接

发布时间:2023-08-27 14:02:26

android监听网络状态框架

就这么简单,让我们开始吧。

看下最终实现的使用:

日志:

好了,新建一个AndroidLibray开始实现。

权限走一波:

首先,咱们需要一个监听网络状态的工具类

在lib中创建一个广播,然后再配置文件里注册一下。

完善下咱们的receiver:

监听接口:

manager:

再加上一个枚举类:

OK,一套正常操作,一个最普通网络监听类写完了。接着咱们尝试用注解,让这个小框架看的有档次些。

完善一下自定义注解:

然后来捋一下思路:

照样是固定三部曲,按照步骤来:

1.先完善我们的注册方法

在这里,我创建了一个方法封装类。比较简单: MethodManager

这里的 mMethodList 是方法封装类(MethodManager)的List,用来存储筛选后的MainActivity中方法,也就是网络监听方法。以下是方法的筛选:

咱们定义一个post方法,去完成这项工作:

这里实现了通过网络监听注解上方的参数,我们可以单独监听某一种网络状态的变化。比如

上方参数表明,只有在WIFI断开和连接的时候,方法才会做出响应。想要所有提示设置为AUTO就行啦。

OK,做完逻辑以后执行一下:

大功告成!跑一下看看效果!

项目地址: https://github.com/CocoYuki/NetListener

是一个练手的小项目,实际网络请求在7.0时就能通过一个CallBack轻松搞定了。

② 如何监控android网络请求

如果你想在logcat用打印的方式监控的话可以在发送请求的地方打log;

也可以用抓包工具进行网络请求的抓取,这样的优势在于你可以看到HTTP请求的具体信息,如post提交的内容,请求头信息,服务器返回错误等信息。常用的抓包工具有fiddler,Wireshark等,具体配置过程可以搜索相关教程。

③ android 怎么监控网络状态可以访问互联网而不是连接状态

在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。
ConnectivityManager有四个主要任务:
1、监听手机网络状态(包括GPRS,WIFI, UMTS等)
2、手机状态发生改变时,发送广播
3、当一个网络连接失败时进行故障切换
4、为应用程序提供可以获取可用网络的高精度和粗糙的状态
当我们要在程序中监听网络状态时,只要一下几个步骤即可:
1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观
复制代码 代码如下:

connectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
Log.i(TAG, "unconnect");
// unconnect network
}else {
// connect network
}
}
};

2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:
复制代码 代码如下:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connectionReceiver, intentFilter);

3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:
复制代码 代码如下:

if (connectionReceiver != null) {
unregisterReceiver(connectionReceiver);
}

④ android开发怎么监听网络请求

Android中网络情况时有变化,比如从有网到没网,从wifi到gprs,gprs又从cmwap到cmnet...等等!
如果你的程序有些功能是需要网络支持的,有时候就需要监听到网络的变化情况进行相应的处理。
比如说下载一个文件,如果突然断网了,怎么处理?网络又恢复了,如何监听到并重连?

当网络变化的时候系统会发出义个广播broadcast,只要在程序中注册一个广播接收器BroadcastReceiver,并在IntentFilter中添加相应的过滤,这样一旦网络有变化,程序就能监听到
public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private void registerDateTransReceiver() {
Log.i(TAG, "register receiver " + CONNECTIVITY_CHANGE_ACTION);
IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_CHANGE_ACTION);
filter.setPriority(1000);
registerReceiver(new MyReceiver(), filter);
}

在MyReceiver中:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "PfDataTransReceiver receive action " + action);
if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){//网络变化的时候会发送通知
Log.i(TAG, "网络变化了");
return;
}
}

当网络变化时,从有网到没网也会发广播,就举的例子来说,如果下载时断网了,接收到广播的时候要判断当前网络是可用还是不可用状态,如果可用进行什么操作;不可用进行什么操作:
public static NetworkInfo getActiveNetwork(Context context){
if (context == null)
return null;
ConnectivityManager mConnMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (mConnMgr == null)
return null;
NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); // 获取活动网络连接信息
return aActiveInfo;
}

这个方法返回的aActiveInfo可以判断网络的有无,如果返回的是null,这时候是断网了,如果返回对象不为空,则是连上了网。在返回的NetworkInfo对象里,可以有对象的方法获取更多的当前网络信息,比如是wifi还是cmwap等,就不多说了。

阅读全文

与android监控网络连接相关的资料

热点内容
教育系统源码达标 浏览:884
声卡驱动安装程序在哪个文件夹 浏览:56
钱还完了银行不给解压 浏览:169
linux的系统调用表 浏览:750
php怎么转换页面 浏览:546
我的世界买了服务器之后怎么开服 浏览:828
r1234yf汽车空调压缩机 浏览:145
ftp服务器地址栏 浏览:900
linux图形分区 浏览:965
安徽到辽宁源码 浏览:577
libs安卓的文件夹叫什么 浏览:871
生意圈app是什么意思 浏览:397
linuxarcgisserver 浏览:234
加密pdf怎么修改文件 浏览:138
红米刷机无命令怎么办 浏览:356
啥叫美国谷歌外包程序员 浏览:260
云服务器管家婆 浏览:440
发邮件命令 浏览:354
程序员好做吗工作好吗 浏览:886
云电脑服务器维护一个月多少钱 浏览:882