Как найти использование Wi-Fi и сетевых данных отдельно по конкретному приложению в android?

recived = TrafficStats.getUidRxBytes(uid); send = TrafficStats.getUidTxBytes(uid); TrafficStats.getMobileRxBytes(); TrafficStats.getMobileTxBytes(); TrafficStats.getTotalRxBytes(); TrafficStats.getTotalTxBytes(); 

У меня есть идентификатор приложения, и я могу получить это использование данных приложений, но я не могу получить информацию более подробно, как использование данных с использованием Wi-Fi и сети. Я хочу найти как отдельно для всех установленных приложений на устройстве. Как я могу это найти? Я уже много пробовал, но для этого не получил никакого решения.

Solutions Collecting From Web of "Как найти использование Wi-Fi и сетевых данных отдельно по конкретному приложению в android?"

Я думаю, вы должны использовать альтернативный способ, получить трафик с помощью UID, например – getUidRxPackets (int uid)

Также полезно (как получить UID): ( Как получить все приложения, установленные на Android-телефоне )

РЕДАКТИРОВАТЬ:

Можете ли вы рассказать мне, как я могу определить, сколько данных использует Wi-Fi и мобильный.

Там хороший ответ – статистика Android 3g для каждого APP, как? Посмотрите его логику.

К сожалению, нет публичных API-интерфейсов для получения этой информации с уровня API 19; Вы TrafficStats API-интерфейсы TrafficStats которые являются общедоступными. Android делает это с использованием внутренних API-интерфейсов, поэтому, если вы не хотите идти по этой дороге (которая действительно НЕОБХОДИМАЯ идея и ВЫСОКО обескуражена Google), вам пока не повезло.

EDIT :
Если вы INSIST используете внутренние API и рискуете нарушить код в различных версиях API, обратитесь к следующим ссылкам и обязательно прочитайте их полностью:
Перекомпиляция Android SDK для использования скрытых и внутренних API
Перекомпиляция Android SDK для Gingerbread и более поздних версий

После того, как вы это сделаете, этот файл поможет вам разобраться в этом:

Пакеты / Приложения / Настройки / SRC / COM / Android / Настройки / fuelgauge / BatteryStatsHelper.java

Вам придется либо скопировать много кода из файла, либо найти processAppUsage() и потянуть все, что вам нужно. В частности, найдите следующие строки:

  // Add cost of wifi traffic final long wifiRx = u.getNetworkActivityCount(NETWORK_WIFI_RX_BYTES, mStatsType); final long wifiTx = u.getNetworkActivityCount(NETWORK_WIFI_TX_BYTES, mStatsType); 

Одно замечание: Android JUST изменил этот код в KitKat (API 19) и, скорее всего, изменит его в будущем. Я не могу достаточно подчеркнуть, как это нарушит ваше приложение, когда они снова захотят изменить.