代码:
传入自己应用程序的包名和上下文即可
public class GetFlowUtil {
public static FlowInfo getAppFlowInfo(String pakageName, Context context) {
//获取到配置权限信息的应用程序
PackageManager pms = context.getPackageManager();
;
List<PackageInfo> packinfos = pms
.getInstalledPackages(PackageManager.GET_PERMISSIONS);
//存放具有Internet权限信息的应用
FlowInfo flowInfo = new FlowInfo();
for (PackageInfo packinfo : packinfos) {
String appName = packinfo.packageName;
if (!TextUtils.isEmpty(appName)) {
if (appName.equals(pakageName)) {
//用于封装具有Internet权限的应用程序信息
//封装应用信息
flowInfo.setPackname(packinfo.packageName);
flowInfo.setIcon(packinfo.applicationInfo.loadIcon(pms));
flowInfo.setAppname(packinfo.applicationInfo.loadLabel(pms).toString());
//获取到应用的uid(user id)
int uid = packinfo.applicationInfo.uid;
//TrafficStats对象通过应用的uid来获取应用的下载、上传流量信息
//发送的 上传的流量byte
flowInfo.setUpKb(TrafficStats.getUidRxBytes(uid));
//下载的流量 byte
flowInfo.setDownKb(TrafficStats.getUidTxBytes(uid));
break;
}
}
}
return flowInfo;
}
}
使用:
public long getUpKb() {//获取上传流量kb
return upKb;
}
public long getDownKb() {//获取下载流量kb
return downKb;
}
public String getAppname() {//获取app的名字
return appname;
}