手机APP流量的发送与获取功能的实现
package com.loaderman.trafficdemo; import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.Formatter;
import android.view.View;
import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView tvMobileRxBytes;
private TextView tvMobileTxBytes;
private TextView tvTotalRxBytes;
private TextView tvTotalTxBytes;
private TextView tvAppRxBytes;
private TextView tvAppTxBytes;
private TextView tvAppWifiRxBytes;
private TextView tvAppWifiTxBytes; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvMobileRxBytes = (TextView) findViewById(R.id.tv_mobileRxBytes);
tvMobileTxBytes = (TextView) findViewById(R.id.tv_mobileTxBytes);
tvTotalRxBytes = (TextView) findViewById(R.id.tv_totalRxBytes);
tvTotalTxBytes = (TextView) findViewById(R.id.tv_totalTxBytes);
tvAppRxBytes = (TextView) findViewById(R.id.tv_appRxBytes);
tvAppTxBytes = (TextView) findViewById(R.id.tv_appTxBytes);
tvAppWifiRxBytes = (TextView) findViewById(R.id.tv_appwifiRxBytes);
tvAppWifiTxBytes = (TextView) findViewById(R.id.tv_appwifiTxBytes);
method();
}
//上网让其产生流量,Demo模拟使用
public void web(View view){
startActivity(new Intent(this,WebViewActivity.class)) ;
}
public void method() {
long totalRxBytes = TrafficStats.getTotalRxBytes(); //接收总流量, wifi + 移动
long totalTxBytes = TrafficStats.getTotalTxBytes();//发送总流量, wifi+移动
long mobileRxBytes = TrafficStats.getMobileRxBytes();//接收总流量, 移动
long mobileTxBytes = TrafficStats.getMobileTxBytes();//发送总流量, 移动
tvMobileRxBytes.setText("手机总接收流量:" + Formatter.formatFileSize(this, totalRxBytes));
tvMobileTxBytes.setText("手机总发送流量:" + Formatter.formatFileSize(this, totalTxBytes));
tvTotalRxBytes.setText("手机GPRS接收:" + Formatter.formatFileSize(this, mobileRxBytes));
tvTotalTxBytes.setText("手机GPRS发送:" + Formatter.formatFileSize(this, mobileTxBytes));
ConnectivityManager connectMgr = (ConnectivityManager) this
.getSystemService(Context.CONNECTIVITY_SERVICE);
ApplicationInfo info = getApplicationInfo();
NetworkInfo netinfo = connectMgr.getActiveNetworkInfo();
if (netinfo != null || netinfo.isAvailable()) {
if (netinfo.getType() == ConnectivityManager.TYPE_MOBILE) {
System.out.println(info.packageName);
String name = info.packageName;
if (name.equals("com.loaderman.trafficdemo") || name == "com.loaderman.trafficdemo") {
int uid = info.uid;
tvAppRxBytes.setText("本软件GPRS接收:" + Formatter.formatFileSize(this, TrafficStats.getUidRxBytes(uid)));
tvAppTxBytes.setText("本软件GPRS发送:" + Formatter.formatFileSize(this, TrafficStats.getUidTxBytes(uid)));
}
}
if (netinfo.getType() == ConnectivityManager.TYPE_WIFI) {
System.out.println(info.packageName);
String name = info.packageName;
if (name.equals("com.loaderman.trafficdemo") || name == "com.loaderman.trafficdemo") {
int uid = info.uid;
tvAppWifiRxBytes.setText("本软件接收wifi:" + Formatter.formatFileSize(this, TrafficStats.getUidRxBytes(uid)));
tvAppWifiTxBytes.setText("本软件发送wifi:" + Formatter.formatFileSize(this, TrafficStats.getUidTxBytes(uid)));
}
}
} }
//可见时再次刷新
@Override
protected void onResume() {
super.onResume();
method();
}
}
添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
效果图

手机APP流量的发送与获取功能的实现的更多相关文章
- 通过天天模拟器加burpsuite抓取手机app流量
通过天天模拟器,代理抓取安卓app数据包.也可以抓取https. 1.下载天天模拟器,官方下载即可,下载安装. 2.启动天天模拟器,设置代理,点击上方wlan设置图标,打开wlan设置,如下: 3.鼠 ...
- 360WIFI下使用Fiddler抓取手机APP流量
过程其实很简单,仅仅做个记录.过程适用Android和ios手机 fidder的原理如下: 下面开始步骤: 1.在fidder中设置代理:Tools--->Fidder Options,设置端口 ...
- 【Python】[技术博客] 一些使用Python编写获取手机App日志的操作
一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 ...
- 手机app抓包
简介 爬虫是cs架构中的c端 原理是模拟浏览器向服务器发送请求 如果要爬取手机APP的数据,APP也是服务端与浏览器性质相同 我们只要获取到手机APP给服务器发送数据 并加以分析就能模拟它的请求 从而 ...
- 使用Fiddler抓取手机APP数据包--360WIFI
使用Fiddler抓取手机APP流量--360WIFI 操作步骤:1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote comput ...
- 利用WeX5给手机APP增加短信验证码功能
帖子来源:http://bbs.wex5.com/thread-70908-1-1.html 遇到一个手机APP项目客户要求注册到APP上的用户手机号必须是真实的通过X5平台整合短信发送平台接口完成了 ...
- App流量测试--使用安卓自身提供的TCP收发长度统计功能
在Linux系统有3个地方保存流量统计文件,对于Android系统同样也适用: (1)在/proc/net/dev下可以查看各个网络接口的收发流量 (等同adb shell cat /proc/pi ...
- 手机App测试如何获取包名的入口【两种方式】
在进行手机APP测试的时候经常要获取包名.那么何为包名呢?简单来说其实就是手机APP的安装apk文件的名称,每个手机APP(软件)的包名都是唯一的. 那么我们怎样来获取包名以及包名的入口呢? 方法一: ...
- 手机app(功能)测试重点
在手机客户端进行查看的测试重点:1.“点击加载更多”的分页处理技术,是否有重复的数据,数据显示是否完整,到达最后一页后是否还有数据进行显示2.数据的排序方式2.界面跳转是否正确3.出现异常情况是否有提 ...
随机推荐
- Mysql(四)-1:单表查询
一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...
- Oracle子句【group by、having】
[分组查询]关键字:group by 分组字段名,分组字段名... --注意1:分组后,在select语句中只允许出现分组字段和多行函数 --注意2:如果是多字段分组,先按第一字段分组,然后每个小组继 ...
- SQL语句复习【专题八】
SQL语句复习[专题八] 序列 Sequence.数据库对象是 oracle 专有的.作用:可以将某一列的值使用序列,来实现自动增长的功能.访问序列的值.[序列有两个属性 nextval currva ...
- sql like 拼接字符串模糊查询
这种分割的值大家常用,如果要用like 来查询包含2,这个值的数据有哪些,这个怎么查? like '%2%' ????,这是不行的如果是 44,125,687 同样可以查出来,那么就想到通配符, l ...
- 【模板】多标记 LCT
代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int mod = 51061 ...
- MySQL字符集或字符序
字符集基础 字符集:数据库中的字符集包含两层含义 各种文字和符号的集合,包括各国家文字,标点符号,图形符号,数字等. 字符的编码方式,即二进制数据与字符的映射规则: 字符集分类: ASCI ...
- Linux Bonding
https://www.cnblogs.com/huangweimin/articles/6527058.html 管理 linux下网卡bonding配置 章节 bonding技术 cent ...
- Codeforces Round #449 [ C/A. Nephren gives a riddle ] [ D/B. Ithea Plays With Chtholly ]
PROBLEM C/A. Nephren gives a riddle 题 http://codeforces.com/contest/896/problem/A codeforces 896a 89 ...
- vue2.0 + element-ui2实现分页
当我们向服务端请求大量数据的时候,并要在页面展示出来,怎么办?这个时候一定会用到分页. 本次所使用的是vue2.0+element-ui2.12实现一个分页功能,element-ui这个组件特别丰富, ...
- 【Winfrom-Button】 重写Button,去掉获取焦点时的边框
Winfrom Button 去掉获取焦点时的边框: 自定义一个Button,重写ShowFocusCues方法 /// <summary> /// 去掉获取焦点的边框 /// </ ...