public void getAppTrafficList(){ //擷取所有的安裝在手機上的應用軟體的資訊,並且擷取這些軟體裡面的許可權資訊 PackageManager pm=getPackageManager();//擷取系統應用程式套件管理 //擷取每個包內的androidmanifest.xml資訊,它的許可權等等 List<PackageInfo> pinfos=pm.getInstalledPackages (PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.GET_PERMISSIONS); //遍曆每個應用程式套件資訊 for(PackageInfo info:pinfos){ //請求每個程式包對應的androidManifest.xml裡面的許可權 String[] premissions=info.requestedPermissions; if(premissions!=null && premissions.length>0){ //找出需要網路服務的應用程式 for(String premission : premissions){ if("android.permission.INTERNET".equals(premission)){ //擷取每個應用程式在作業系統內的進程id int uId=info.applicationInfo.uid; //如果返回-1,代表不支援使用該方法,注意必須是2.2以上的 long rx=TrafficStats.getUidRxBytes(uId); //如果返回-1,代表不支援使用該方法,注意必須是2.2以上的 long tx=TrafficStats.getUidTxBytes(uId); if(rx<0 || tx<0){ continue; }else{ // Toast.makeText(this, info.applicationInfo.loadLabel(pm)+"消耗的流量--"+ // Formatter.formatFileSize(this, rx+tx), Toast.LENGTH_SHORT); } } } } } }