जवाबों:
जाँच करें android.os.Build.VERSION
।
CODENAME
: वर्तमान विकास कोडनाम, या स्ट्रिंग "REL" यदि यह एक रिलीज बिल्ड है।INCREMENTAL
: इस स्रोत का प्रतिनिधित्व करने के लिए अंतर्निहित स्रोत नियंत्रण द्वारा उपयोग किया जाने वाला आंतरिक मूल्य।RELEASE
: उपयोगकर्ता-दृश्यमान संस्करण स्ट्रिंग।
उदाहरण के लिए इसका उपयोग कैसे करें:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
Build.Version इस डेटा के लिए जाने का स्थान है। यहाँ एक कोड स्निपेट है कि इसे कैसे प्रारूपित किया जाए।
public String getAndroidVersion() {
String release = Build.VERSION.RELEASE;
int sdkVersion = Build.VERSION.SDK_INT;
return "Android SDK: " + sdkVersion + " (" + release +")";
}
इस तरह दिखता है "Android SDK: 19 (4.4.4)"
Build.VERSION.RELEASE;
यह आपको आपके संस्करण की वास्तविक संख्या देगा; उर्फ 2.3.3 या 2.2। Build.VERSION.SDK_INT का उपयोग करने के साथ समस्या यह है कि यदि आपके पास एक रूटेड फ़ोन या कस्टम रोम है, तो आपके पास कोई भी मानक OS नहीं हो सकता (aka my android 2.3.5 चल रहा है) और बिल्ड का उपयोग करते समय यह अशक्त हो जाएगा। VERS.S.SKKINT तो Build.VERSION.RELEASE काम करेगा कोई बात नहीं!
डिवाइस संस्करण की जाँच के लिए जो मार्शमैलो से अधिक या बराबर है, इस कोड का उपयोग करें।
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
}
अन्य लोगों को रोकने के लिए बस VERSION_CODES को बदलें, जैसे
कि किटकैट के लिए
,
L नूगट के लिए लॉलीपॉप एन के लिए और इसी तरह ...
आप Android संस्करण को देख सकते हैं Build.VERSION
।
प्रलेखन आपको Build.VERSION.SDK_INT
मूल्यों के खिलाफ जांच करने की सलाह देता है Build.VERSION_CODES
।
यह तब तक ठीक है जब तक आपको एहसास होता है कि Build.VERSION.SDK_INT
केवल एपीआई स्तर 4 में पेश किया गया था, जिसे एंड्रॉइड 1.6 (डोनट) कहना है। तो यह आपको प्रभावित नहीं करेगा, लेकिन अगर आप चाहते हैं कि आपका ऐप एंड्रॉइड 1.5 या उससे पहले के संस्करण पर चले, तो आपको Build.VERSION.SDK
इसके बजाय पदावनत का उपयोग करना होगा ।
मैं उत्तरों पर टिप्पणी नहीं कर सकता, लेकिन कौशिक के उत्तर में एक बड़ी गलती है: SDK_INT सिस्टम संस्करण के समान नहीं है, लेकिन वास्तव में एपीआई स्तर को संदर्भित करता है।
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
//this code will be executed on devices running ICS or later
}
मान Build.VERSION_CODES.ICE_CREAM_SANDWICH
14 के बराबर है। 14 आइस क्रीम सैंडविच का एपीआई स्तर है, जबकि सिस्टम संस्करण 4.0 है। इसलिए यदि आप 4.0 लिखते हैं, तो आपका कोड डोनट से शुरू होने वाले सभी उपकरणों पर निष्पादित किया जाएगा, क्योंकि 4 डोनट का एपीआई स्तर ( Build.VERSION_CODES.DONUT
4 के बराबर) है।
if(Build.VERSION.SDK_INT >= 4.0){
//this code will be executed on devices running on DONUT (NOT ICS) or later
}
यह उदाहरण एक कारण है कि 'मैजिक नंबर' का उपयोग करना एक बुरी आदत है।
if(Build.VERSION.SDK_INT >= 15){
उदाहरण के लिए, एक सुविधा केवल api21 के लिए काम करती है, हम नीचे api21 में बग्स को ठीक करते हैं
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
ध्यान रखें कि Build.VERSION.SDK_INT विश्वसनीय नहीं है, यह @ Falcon165o द्वारा उल्लेख किया गया है और हाल ही में मैं भी एक में भाग गया।
तो स्ट्रिंग डेटा प्राप्त करने के लिए ( Android संस्करण सूची के आधार पर) वर्तमान में स्थापित Android ) , मैंने इस तरह एक कोड बनाया:
जावा
//Current Android version data
public static String currentVersion(){
double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));
String codeName="Unsupported";//below Jelly bean OR above Oreo
if(release>=4.1 && release<4.4)codeName="Jelly Bean";
else if(release<5)codeName="Kit Kat";
else if(release<6)codeName="Lollipop";
else if(release<7)codeName="Marshmallow";
else if(release<8)codeName="Nougat";
else if(release<9)codeName="Oreo";
return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;
}
Kotlin
fun currentVersion(): String {
val release = java.lang.Double.parseDouble(java.lang.String(Build.VERSION.RELEASE).replaceAll("(\\d+[.]\\d+)(.*)", "$1"))
var codeName = "Unsupported"//below Jelly bean OR above Oreo
if (release >= 4.1 && release < 4.4) codeName = "Jelly Bean"
else if (release < 5) codeName = "Kit Kat"
else if (release < 6) codeName = "Lollipop"
else if (release < 7) codeName = "Marshmallow"
else if (release < 8) codeName = "Nougat"
else if (release < 9) codeName = "Oreo"
return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}
इसका उत्पादन करने वाले उत्पादन का उदाहरण:
मार्शमैलो v6.0, एपीआई स्तर: 23
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
इस वर्ग का उपयोग करें
import android.os.Build;
/**
* Created by MOMANI on 2016/04/14.
*/
public class AndroidVersionUtil {
public static int getApiVersion() {
return android.os.Build.VERSION.SDK_INT;
}
public static boolean isApiVersionGraterOrEqual(int thisVersion) {
return android.os.Build.VERSION.SDK_INT >= thisVersion;
}
}
इस विधि का उपयोग करें:
public static String getAndroidVersion() {
String versionName = "";
try {
versionName = String.valueOf(Build.VERSION.RELEASE);
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}
bash
आपके Android डिवाइस पर आपके द्वारा दिए गए , आप इस बैश फ़ंक्शन का उपयोग कर सकते हैं:
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)
# Time "androidRelease" x10 to test it as an integer
case $androidRelease in
[0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9]) androidRelease=$(echo $androidRelease | cut -d. -f1-2 | tr -d .);;
[0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;
[0-9]) androidRelease+="0";;
esac
[ -n "$androidRelease" ] && [ $androidCodeName = REL ] && {
# Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
androidCodeName=""
case $androidRelease in
10) androidCodeName+=NoCodename;;
11) androidCodeName+="Petit Four";;
15) androidCodeName+=Cupcake;;
20|21) androidCodeName+=Eclair;;
22) androidCodeName+=FroYo;;
23) androidCodeName+=Gingerbread;;
30|31|32) androidCodeName+=Honeycomb;;
40) androidCodeName+="Ice Cream Sandwich";;
41|42|43) androidCodeName+="Jelly Bean";;
44) androidCodeName+=KitKat;;
50|51) androidCodeName+=Lollipop;;
60) androidCodeName+=Marshmallow;;
70|71) androidCodeName+=Nougat;;
80|81) androidCodeName+=Oreo;;
90) androidCodeName+=Pie;;
100) androidCodeName+=ToBeReleased;;
*) androidCodeName=unknown;;
esac
}
echo $androidCodeName
}