获得mac地址,貌似是通过wpa_suplicant这个daemon来获取的。android程序的java没做什么事情,一般就是一些状态维护工作,实际的事情还是通过虚拟机和jni用native代码做的。获取mac的jni在 android_net_Wifi_wifi.cppstatic jstring android_net_wifi_getMacAddressCommand(JNIEnv* env, jobject clazz) { char reply[256]; char buf[256]; if (doCommand("DRIVER MACADDR", reply, sizeof(reply)) != 0) { return env->NewStringUTF(NULL); } // reply comes back in the form "Macaddr = XX.XX.XX.XX.XX.XX" where XX // is the part of the string we're interested in. if (sscanf(reply, "%*s = %255s", buf) == 1) return env->NewStringUTF(buf); else return env->NewStringUTF(NULL); } 你可以参看源码写写吧
jni 中cpp里使用Linux 中的方法函数可实现 ,封装成jstring ,传给上层java~
{
char reply[256];
char buf[256]; if (doCommand("DRIVER MACADDR", reply, sizeof(reply)) != 0) {
return env->NewStringUTF(NULL);
}
// reply comes back in the form "Macaddr = XX.XX.XX.XX.XX.XX" where XX
// is the part of the string we're interested in.
if (sscanf(reply, "%*s = %255s", buf) == 1)
return env->NewStringUTF(buf);
else
return env->NewStringUTF(NULL);
}
你可以参看源码写写吧