Android 統計單個應用流量

2021-10-24 04:00:24 字數 2769 閱讀 8519

在server中獲取的流量資料

根據包名獲取該應用的uid

public int getuid(string package)  catch (packagemanager.namenotfoundexception e) 

return -1;

}

流量統計工具類

public class datausageutil 

public static datausageutil getinstance(context context)

return instance;

}public mapforloadermanager(networktemplate template, long start, long end)

mstats = null;

((activity)mcontext).getloadermanager().restartloader(loader_summary,

summaryforalluidloader.buildargs(template, start, end), msummarycallbacks);

int time = 50;

while(true)

if(mstats == null)

pm = mcontext.getpackagemanager();

mapmap = new hashmap<>();

int size = mstats.size();

networkstats.entry entity = null;

for(int i=0; imsummarycallbacks = new loadermanager.loadercallbacks<

networkstats>()

@override

public void onloadfinished(loaderloader, networkstats data)

@override

public void onloaderreset(loaderloader)

private void updateemptyvisible()

};public class datausagewifi

}public mapfornetworkstatsmanager(int type, long start, long end)

telephonymanager tm = (telephonymanager) mcontext.getsystemservice(context.telephony_service);

if(pm == null)

networkstatsmanager nsm = (networkstatsmanager) mcontext.getsystemservice(context.network_stats_service);

if(nsm == null)

try

return result;

} catch (remoteexception e)

}private mapgetdatausagebyuid(networkstatsmanager nsm, telephonymanager tm,

int type, long start, long end) throws remoteexception

mapmap = new hashmap<>();

summarystats = nsm.querysummary(type, subid, start, end);

do while (summarystats.hasnextbucket());

return map;

}}

該類是拷貝設定裡面的乙個類

public class summaryforalluidloader extends asynctaskloader

public summaryforalluidloader(context context, inetworkstatssession session, bundle args)

@override

protected void onstartloading()

@override

public networkstats loadinbackground() catch (remoteexception e)

}@override

protected void onstoploading()

@override

protected void onreset()

}

最終獲取應用流量資料

public long fornetworkstatsmanager()

log.e(tag,"使用流量:mobile="+ mapmobile.size()+ ", wifi="+ mapwifi.size()+ "\n");

maplist = new hashmap<>();

setkeys = mapmobile.keyset();

for(integer key : keys)else

} keys = mapwifi.keyset();

for(integer key : keys)else

} keys = list.keyset();

for(integer key : keys)

} return 0;

}

android 流量統計

說明 這裡流量統計用到的方法只支援在6.0以上系統執行,還有用到的乙個許可權只提供給系統應用使用,這兩條不能滿足,這篇文章基本也沒什麼參考價值,請移步其他解決方式。關於流量統計,早期android系統做的不太完善,手機關機所有的統計流量就會清零,資料都是從開機到當前時間的資料,沒有具體的一段時間內的...

Android流量統計

static long getmobilerxbytes 獲取通過mobile連線收到的位元組總數,不包含wifi static long getmobilerxpackets 獲取mobile連線收到的資料報總數 static long getmobiletxbytes mobile傳送的總位元組...

android 流量統計

1 android通過架構流量統計trafficstats類可以直接獲得 獲得總流量受理trafficstats.gettotalrxbytes 獲得總傳出流量trafficstats.gettotaltxbytes 獲取不包括wifi的手機gprs接收量trafficstats.getmobile...