获取Android版本

摘要:
=(sdkIntFieldID=(*env)-˃GetStaticFieldID(env,versionClass,“SDK_INT”,“I”));2021jintsdkInt=0;22if(成功)23{24sdkInt=(*env)-˃GetStaticIntField(env,versionClass,sdkIntFieldID);25__android_log_print(android_log_VERBOSE,TAG,“sdkInt=%d”,sdkInt);26}2728if(成功&&sdkIntFindClass(env),“java/lang/System”=(NULL!=(setPropertyMethodID=(*env)-˃GetStaticMethodID(env,systemClass,“setProperty”,“(Ljava/lang/String;Ljava/llang/String;)Ljava/lang/String;”));3738jstringpropString=NULL;39if(成功)40success=(NULL!

JAVA:

摘自http://stackoverflow.com/questions/3423754/retrieving-android-api-version-programmatically

从1.6开始,

int currentapiVersion = android.os.Build.VERSION.SDK_INT;

if (currentapiVersion >= android.os.Build.VERSION_CODES.FROYO){
    // Do something for froyo and above versions
} else{
    // do something for phones running an SDK before froyo
}

相关代号宏:

http://developer.android.com/reference/android/os/Build.VERSION.html#SDK_INT

http://developer.android.com/reference/android/os/Build.VERSION_CODES.html

JNI C/C++:

摘自:http://stackoverflow.com/questions/10196361/how-to-check-the-device-running-api-level-using-c-code-via-ndk

1 //Based on article here:
2     //   http://android-developers.blogspot.co.uk/2011/09/androids-http-clients.html
3     //Which references the issue documented here:
4     //   http://code.google.com/p/android/issues/detail?id=2939
5     //We need to set "http.keepAlive" to "false" if running an OS version earlier than Froyo (API Level 8)
6 
7     if ((*env)->ExceptionCheck(env))
8         return false; //already got an exception pending
9 
10     bool success = true;
11 
12     //VERSION is a nested class within android.os.Build (hence "$" rather than "/")
13     jclass versionClass = (*env)->FindClass(env, "android/os/Build$VERSION");
14     if (NULL ==versionClass)
15         success = false;
16 
17     jfieldID sdkIntFieldID =NULL;
18     if(success)
19         success = (NULL != (sdkIntFieldID = (*env)->GetStaticFieldID(env, versionClass, "SDK_INT", "I")));
20 
21     jint sdkInt = 0;
22     if(success)
23 {
24         sdkInt = (*env)->GetStaticIntField(env, versionClass, sdkIntFieldID);
25         __android_log_print(ANDROID_LOG_VERBOSE, TAG, "sdkInt = %d", sdkInt);
26 }
27 
28     if (success && sdkInt < 8)
29 {
30         jclass systemClass = (*env)->FindClass(env, "java/lang/System");
31         if (NULL ==systemClass)
32             success = false;
33 
34         jmethodID setPropertyMethodID =NULL;
35         if(success)
36             success = (NULL != (setPropertyMethodID = (*env)->GetStaticMethodID(env, systemClass, "setProperty", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;")));
37 
38         jstring propString =NULL;
39         if(success)
40             success = (NULL != (propString = (*env)->NewStringUTF(env, "http.keepAlive")));
41 
42         jstring valueString =NULL;
43         if(success)
44             success = (NULL != (valueString = (*env)->NewStringUTF(env, "false")));
45 
46         jobject oldValueString =NULL;
47         if(success)
48 {
49             __android_log_print(ANDROID_LOG_VERBOSE, TAG, "Disabling http.keepAlive");
50              oldValueString = (*env)->CallStaticObjectMethod(env, systemClass, setPropertyMethodID, propString, valueString);
51 }
52 
53         //cleanup
54         (*env)->DeleteLocalRef(env, propString);
55         (*env)->DeleteLocalRef(env, valueString);
56         (*env)->DeleteLocalRef(env, oldValueString);
57         (*env)->DeleteLocalRef(env, systemClass);
58 }
59 
60     //cleanup
61     (*env)->DeleteLocalRef(env, versionClass);
62 
63     return success;

免责声明:文章转载自《获取Android版本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Zabbix监控Nginx状态页实战案例CodeSmith实用技巧(六):使用XML 属性下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vs设置git 忽略文件

在代码目录下建立.gitignore文件: .gitignore ,配置上要忽略的文件或者文件夹,然后提交到git 上就可以了。 如果文件已经被跟踪且被推送到远程,把本地这些文件删除再提交到远端。 git rm -r --cached . git add . git commit -m "update .gitignore"  官方.gitigonre...

python将py编译成so方法

python将py编译成so方法 转载 2017年09月08日 10:13:29 标签:pyd /ipython 849python:让源码更安全之将py编译成so 应用场景   Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。   python的解释特性是将py编译为独有的二进制编码pyc文件,然后对...

【ANT】Ant常用的内置task

ant 例如:  <target name="callProjectB">   <echo message="In projectA calling projectB"/> <ant antfile="subfile/projectB.xml" /> </target> 说明:...

使用 VSCode 在 Mac 上配置 C/C++ 调试环境

Background VSCode是微软开发的一款开源代码编辑器,具有可拓展性强,多语言支持,跨平台等优点,在不同的个性化配置下几乎可以用作所有的轻量级开发。我在初学C的时候也使用的是类似于Xcode、Visual Studio等大型IDE来新建一个C语言工程,编写一个仅含有main函数的文件,显得过于大材小用了。后来学校推荐使用的Code::Blocks...

webpack 多环境打包

目前来说有两种方案: 方案一: 1.修改build文件夹下build.js文件   添加声明变量    2.修改config文件夹下dev.env.js文件   这个是开发环境所用版本    3.修改config文件夹下prod.env.js文件    添加不同环境的名称,暂时以正式环境和测试环境两个环境为例    4.不同配置参数引用          ...

Vue项目中引入electron发布桌面应用

1. 在原先已有的Vue项目里面,打开终端执行vue add electron-builder ; 2. 选择合适的版本安装好这个插件,执行npm run electron:serve ; 3. 如果页面没有什么错误,就会弹出一个vue的应用窗口,说明准备工作已经完成; 4. 如果需要修改桌面应用界面或窗口之类的一些配置,则需要在package.json文...