Почему я не могу правильно прочитать / proc / net / xt_qtaguid / stats с помощью FileReader в Android ICS - PullRequest
2 голосов
/ 31 января 2012

Я хочу прочитать / proc / net / xt_qtaguid / stats в Android ICS, которая записывает все интерфейсы и статистику трафика приложений. Ниже приведен фрагмент кода:

String line = null;
BufferReader reader = new BufferedReader(new FileReader(new File("/proc/net/xt_qtaguid/stats")));

line = reader.readLine();/*Here I can read the 1st line correctly, it return "idx  iface acct_tag_hex..."*/
splitLine(line, keys);
line = reader.readLine();//!!!!!Read next line, it returns null!!!!!!

Если я отследю этот файл, он покажет:

idx iface_ctg_hex uid_tag_int cnt_set

2 rmnet0 0x0 0 0 6266 105 8882 121 1428 30 4838 75 0 0 208 4 2552 44 6122 73

3 rmnet0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

4 rmnet0 0x0 1000 0 0 0 2262 39 0 0 0 0 0 0 0 0 2262 39 0 0

5 rmnet0 0x0 1000 1 0 0 290 5 0 0 0 0 0 0 0 0 290 5 0 0

6 rmnet0 0x0 10004 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

7 rmnet0 0x0 10004 1 20177 36 7037 81 20177 36 0 0 0 0 7037 81 0 0 0 0

И я обнаружил, что NetworkStatsFactory.java (оригинальный класс Android) также читает этот файл и использует тот же метод. Я пытаюсь использовать этот класс, и он также не может правильно читать:

try{
    NetworkStats stats = new NetworkStatsFactory().readNetworkStatsDetail(10004);
    stats.size();//size is ZERO!
}
catch(IllegalStateException e){
    //Do nothing
}

Инженер Google сделал ту же ошибку? :)

1 Ответ

7 голосов
/ 03 февраля 2012

Я получил ответ, функция read_proc этого виртуального файла ограничивает uid, каждое приложение может только читать заголовок и свою собственную строку.

...