为什么我的 Android APP 把 tcpdump 权限改成 777 还是不能使用 tcpdump?

Why can't my Android APP use tcpdump eventhough I change the permission of tcpdump to 777?

我把/system/xbin/tcpdump的权限改成777,然后在我的AndroidAPP里写代码如下。
但我仍然收到错误消息 "stderr=tcpdump: any: 您无权在该设备上捕获”和 "stderr=(socket: Operation not permitted)"

有人知道这里有什么问题吗? 谢谢

流程流程

String[] cmd = {"/system/xbin/tcpdump", "-i any", "-w /sdcard/tcpdump.pkt"};  
TextUtils.join(" ", cmd);  
process = Runtime.getRuntime().exec(cmd);  
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line;
while ((line = errorReader.readLine()) != null) {
  Log.d(TAG, "stderr="+line);
}

Android 不支持原始套接字,其中包括使用嗅探器收集原始帧的能力,任何用户 space 进程在非根设备上。

如果您查看 main support site for TCPDump on Android,您会发现第一个要求是 a rooted Android device.