2010-09-04 126 views

回答

0

Runtime.getruntime.exec

7

你可以写一些的Android NDK代码调用klogctl功能。例如:

#include <sys/klog.h> 

#define KLOG_READ_ALL 3 
#define KLOG_LEN (1 << 17) 

char buf[KLOG_LEN]; 

if (klogctl(KLOG_READ_ALL, buf, KLOG_LEN) < 0) 
{ 
    printf("Error %s reading dmesg\n", strerror(errno)); 
} 
else 
{ 
    /* do something with contents of buf */ 
} 

但是,在Android 4.1 Jelly Bean中,他们实现了一个不允许访问dmesg消息的安全功能。上面的代码将失败,出现“操作不允许”错误。如果你必须给设备的root访问权限,你可以关闭dmesg_restrict:

echo 0 > /proc/sys/kernel/dmesg_restrict 

而且,最近的一些设备已经启用SELinux的,在这种情况下,你需要做的

setenforce 0 

如果你不”没有root权限,你几乎不走运。