Android上的jNetPcap:findAllDevs方法的问题!

Tha*_*sas 5 android exception device sniffer libpcap

我已经成功地将jNetPcap编译为Android的共享库.我使用以下代码创建了一个简单的应用程序:http://jnetpcap.com/examples/classic来测试API.

问题是当我调用方法findAllDevs并引发异常时出现以下消息:"无法读取设备列表,错误发布:拒绝权限"

我无法理解原因,因为我已经在我的程序的第一部分进行了调用,以获得我的应用程序的root权限,并将我的应用程序测试到root电话.当我运行应用程序时,会弹出一条弹出窗口,显示以下消息:"SnifferApp已被授予超级用户权限",然后发生异常.

有任何想法吗?

这是我的一段代码:

Process p = Runtime.getRuntime().exec("su");
/*try {
    Thread.sleep(10000);
} catch (InterruptedException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} // do nothing for 1000 miliseconds (1 second)
*/
try {
        System.loadLibrary(JNETPCAP_LIBRARY_NAME);
}
catch (UnsatisfiedLinkError e) {
    System.out.println("Native code library failed to load.\n" + e);
}

 /***************************************************************************
 * First get a list of devices on this system
 **************************************************************************/ 
 int r = Pcap.findAllDevs(alldevs, errbuf);
 r = Pcap.findAllDevs(alldevs, errbuf);
 if (r == Pcap.NOT_OK || alldevs.isEmpty()) { 
    tv.append("Can't read list of devices, error is" + errbuf 
    .toString());
    setContentView(tv);
    return; 
 }
Run Code Online (Sandbox Code Playgroud)

Tra*_*lio 0

据我了解,您正在创建一个新进程并获得超级用户权限,但您的应用程序没有它们。

尝试在清单文件中添加此权限:

<uses-permission android:name="android.permission.INTERNET" /> 
Run Code Online (Sandbox Code Playgroud)

因为我猜 findAllDevs 会打开手机上的网络设备。