能力值:
( LV1,RANK:0 )
|
-
-
2 楼
这代码块排版咋乱了啊
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <jni.h> const char* getId(); JNIEXPORT jstring JNICALL Java_com_miyn_device_1id_Main_stringFromJNI(JNIEnv* env, jobject thiz) { const char* id_text = getId(); return (*env)->NewStringUTF(env,id_text); } const char* getId () { FILE* res = popen("stat -f /","r"); if(res==NULL) { return "Execute Error!"; } char res_cache[8][1024]; char res_final[1024]; int line = 0; while( fgets(res_cache[line],1024,res) != NULL) { line++; } pclose(res); int scan_res = sscanf(res_cache[1]," ID: %s ",&res_final); if(scan_res != 1) { eturn "Get Error!"; } return res_final; }
```
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
同型号设备是一致的
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
不用JNI也没几行代码,不需要调用命令行的。 /** * 获取文件系统ID */ fun getFileSystemId(path : String = "/"): Long{ return try{ val structStatVfs = android.system.Os.statvfs(path) structStatVfs.f_fsid }catch (e : Throwable){ 0L } }
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谢谢认可。写得挺好的,但是这种方法相对来说并不是最佳做法,最佳做法是直接调用c语言的statvfs函数API去获取。
|
能力值:
( LV1,RANK:0 )
|
-
-
7 楼
恋空
谢谢认可。写得挺好的,但是这种方法相对来说并不是最佳做法,最佳做法是直接调用c语言的statvfs函数API去获取。
嗯嗯,多谢指点,另外我发现如果升级系统之后,这个指令获取到的id会变动,虽然也是随机的。。。
|
能力值:
( LV1,RANK:0 )
|
-
-
8 楼
谢谢各位大佬指点
最后于 2021-12-17 00:15
被6945编辑
,原因: 错字
|
能力值:
( LV1,RANK:0 )
|
-
-
9 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
|
|
|