2015-09-24 2 views
1

Мне нужно отслеживать всю сетевую активность на устройстве как часть моего приложения, а не для целей отладки. This post говорит об использовании дампа TCP, но некоторые ответы предполагают, что для этого требуется root. Ни один из ответов не объясняет, как вы это сделаете в приложении.Как работают приложения для Android, которые контролируют всю сетевую активность?

Я знаю, что как-то можно получить доступ ко всему сетевому трафику из приложения, потому что приложения, такие как Network Connections, могут отображать все доступные IP-адреса, а также какие приложения обращаются к ним.

Кто-нибудь знает, какие API, разрешения и т. Д. Мне нужно будет использовать, чтобы получить данные такого типа в моем приложении?

+0

Если это для отладки это зависит от того, что вы используете для транспортировки данных. HttpUrlConnection, HttpClient, OkHttp. Вы можете легко регистрировать все данные, проходящие через них. –

+0

Чтобы уточнить, я хочу отслеживать всю сетевую активность на устройстве, а не только из моего приложения, и я хочу, чтобы он был доступен конечному пользователю, а не только для отладки. Я думаю, что редактирование другого пользователя сделало это менее понятным (хотя это было полезно в целом!) –

ответ

1

Если вы все еще ищете, в пакете android.net есть этот класс:

/** 
* Collection of historical network statistics, recorded into equally-sized 
* "buckets" in time. Internally it stores data in {@code long} series for more 
* efficient persistence. 
* <p> 
* Each bucket is defined by a {@link #bucketStart} timestamp, and lasts for 
* {@link #bucketDuration}. Internally assumes that {@link #bucketStart} is 
* sorted at all times. 
* 
* @hide 
*/ 
public class NetworkStatsHistory implements Parcelable { 
+0

@ user3174484 вы нашли какой-нибудь способ? Я также пытаюсь добиться того же, что и вы. – Kaustubh

Смежные вопросы