android获取自己app消耗的流量

代码:

传入自己应用程序的包名和上下文即可

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;
}

猜你喜欢

转载自blog.csdn.net/baidu_31093133/article/details/79370844