2011-06-20 28 views
0

使用以下代碼檢查AndroidManifest.xml中是否將debuggable標記設置爲true或false。如果應用程序可調試,NDK檢測

strcpy(name, "ro.debuggable"); 
__system_property_get(name, buf); 
__android_log_print(ANDROID_LOG_INFO, "ro.debuggable", "%s",buf); 

但無論哪種方式,它總是返回0 ...

我缺少的東西?

回答

4

AndroidManifest.xml中可調試標記的信息位於ApplicationInfo中。你需要獲得Java方面的信息。

/* exception handling code is omitted */ 
PackageManager pm = context.getPackageManager(); 
ApplicationInfo ai = new ApplicationInfo(); 
ai = pm.getApplicationInfo(context.getPackageName(), 0); 
if ((ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 
     ApplicationInfo.FLAG_DEBUGGABLE) { 
    /* android:debuggable="true" */ 
} 
+0

如何在C/C++中使用NDK獲取? – McBob

+1

您需要使用JNI。此外,您的原始問題中的代碼正在使用私人API的大量喇叭。不要這樣做。 – hackbod

+0

你是什麼意思?你的意思是我不應該使用__system_property_get? 在任何情況下,使用JNI直接在C/C++代碼中使用Kazuki從上面運行Java代碼的任何片段,似乎無法在NDK中找到上述指令的任何定義。 – McBob