2010-09-04 5 views

Répondre

0

Runtime.getruntime.exec

7

Vous pouvez écrire un code Android NDK qui appelle les klogctl fonctions. Quelque chose comme:

#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 */ 
} 

Cependant, dans Android 4.1 Jelly Bean, ils ont mis en place un dispositif de sécurité qui interdit l'accès aux messages dmesg. Le code ci-dessus échouera avec une erreur "Opération non autorisée". Si vous avez un accès root à l'appareil, vous pouvez désactiver dmesg_restrict:

echo 0 > /proc/sys/kernel/dmesg_restrict 

En outre, certains appareils récents ont SELinux activé, dans ce cas, vous devez faire

setenforce 0 

Si vous n » J'ai un accès root, vous n'avez pas vraiment de chance.