ফোনটি বর্তমানে চলছে এমন এপিআই সংস্করণ পাওয়ার কী কোনও উপায় আছে?
ফোনটি বর্তমানে চলছে এমন এপিআই সংস্করণ পাওয়ার কী কোনও উপায় আছে?
উত্তর:
অ্যান্ড্রয়েড ডকুমেন্টেশনে বর্ণিত হিসাবে, ফোনটি যে SDK স্তর (পূর্ণসংখ্যা) চলছে সেগুলি এখানে উপলব্ধ:
android.os.Build.VERSION.SDK_INT
এই int এর সাথে সম্পর্কিত android.os.Build.VERSION_CODES
ক্লাসটি ক্লাসে রয়েছে।
কোড উদাহরণ:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
// Do something for lollipop and above versions
} else{
// do something for phones running an SDK before lollipop
}
সম্পাদনা করুন : এই এসডিকেটিপিটি ডোনট (অ্যান্ড্রয়েড 1.6 / এপিআই 4) এর পরে উপলব্ধ তাই আপনার অ্যাপ্লিকেশন কাপকেকে (অ্যান্ড্রয়েড 1.5 / এপিআই 3) এর সাথে পূর্বের সাথে সামঞ্জস্যপূর্ণ নয় তা নিশ্চিত করুন বা আপনার অ্যাপ্লিকেশনটি ক্রাশ হয়ে যাবে (যথাযথতার জন্য প্রোগ্রামার ব্রুসকে ধন্যবাদ) ।
সংশ্লিষ্ট অ্যান্ড্রয়েড ডকুমেন্টেশন এখানে এবং এখানে রয়েছে is
minSdkVersion
করার 4
(অ্যান্ড্রয়েড 1.6) এবং যান।
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
int version = Build.VERSION.SDK_INT;
String versionRelease = Build.VERSION.RELEASE;
Log.e("MyActivity", "manufacturer " + manufacturer
+ " \n model " + model
+ " \n version " + version
+ " \n versionRelease " + versionRelease
);
E/MyActivity: manufacturer ManufacturerX
model SM-T310
version 19
versionRelease 4.4.2
Build.VERSION.RELEASE;
এটি আপনাকে আপনার সংস্করণের আসল সংখ্যা দেবে; ওরফে 2.3.3 বা 2.2। বিল্ড. ভার্সন.এসডি কে.এন.টি ব্যবহার করে সমস্যাটি হ'ল যদি আপনার কাছে কোনও রুটযুক্ত ফোন বা কাস্টম রম থাকে তবে আপনার কোনও মানক ওএস থাকতে পারে (ওরফে আমার অ্যান্ড্রয়েড ২.৩.৫ চলছে) এবং এটি বিল্ড.ভি.এস.আর.এস.এন.ডি.এস.টি. ব্যবহার করার সময় বাতিল হয়ে যাবে will সুতরাং বিল্ড. ভার্সন.আরলএইএস স্ট্যান্ডার্ড অ্যান্ড্রয়েড সংস্করণ ব্যবহার করে কোনও কাজ করবে না!
এটি ব্যবহার করতে, আপনি কেবল এটি করতে পারেন;
String androidOS = Build.VERSION.RELEASE;
int android.os.Build.VERSION.SDK_INT
এবং public static final int SDK_INT
এবং Added in API level 4
কীভাবে (পূর্ণসংখ্যার নয়) ফিরে আসতে পারে NULL
? NULL
তাই তার নির্মান অথবা সংস্করণ হতে পারে একটি বস্তুর জন্য একটি রাষ্ট্র null
তাত্ত্বিকভাবে কিন্তু এই ধরনের ক্ষেত্রে না শুধুমাত্র SDK_INT
কিন্তু RELEASE
সেইসাথে একটি NPE কারণ হবে। এসডিকে.এনপিটি সম্ভবত "এ জাতীয় কোনও পদ্ধতি ব্যতিক্রম নয়" বা এর মতো কিছু হতে পারে তবে নাল বা এনপিই নয়। যদি কেবল কাস্টম রম ডক্স এবং পদ্ধতি হিসাবে ঘোষিত হয় public static final Integer SDK_INT
। আমি কেবল একটি সমস্যার সমাধান করার জন্য কোনও সমস্যার প্রকৃতি নির্ধারণ করার চেষ্টা করছি।
null
।
আমলে নিয়ে সমস্তই বলেছে, ডিভাইসে ফ্রয়েও বা আরও নতুন অ্যান্ড্রয়েড ওএস (২.২+) রয়েছে কিনা তা সনাক্ত করার জন্য আমি এখানে কোডটি ব্যবহার করছি:
public static boolean froyoOrNewer() {
// SDK_INT is introduced in 1.6 (API Level 4) so code referencing that would fail
// Also we can't use SDK_INT since some modified ROMs play around with this value, RELEASE is most versatile variable
if (android.os.Build.VERSION.RELEASE.startsWith("1.") ||
android.os.Build.VERSION.RELEASE.startsWith("2.0") ||
android.os.Build.VERSION.RELEASE.startsWith("2.1"))
return false;
return true;
}
স্পষ্টতই, আপনি জেনেরিক চেকারের প্রয়োজনে অ্যান্ড্রয়েডের 1.0 এবং 1.5 সংস্করণ বিবেচনার জন্য শর্তটি বিবেচনা করলে আপনি এটি সংশোধন করতে পারেন can আপনি সম্ভবত এরকম কিছু দিয়ে শেষ করবেন:
// returns true if current Android OS on device is >= verCode
public static boolean androidMinimum(int verCode) {
if (android.os.Build.VERSION.RELEASE.startsWith("1.0"))
return verCode == 1;
else if (android.os.Build.VERSION.RELEASE.startsWith("1.1")) {
return verCode <= 2;
} else if (android.os.Build.VERSION.RELEASE.startsWith("1.5")) {
return verCode <= 3;
} else {
return android.os.Build.VERSION.SDK_INT >= verCode;
}
}
কোড আপনার জন্য কাজ করে না কিনা তা আমাকে জানান।
এটা চেষ্টা কর:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
বুঝেছি. getApplicationInfo()
এটি Context
ক্লাসের পদ্ধতিটি ব্যবহার করে ।
SDK.INT অ্যান্ড্রয়েড 1.6 এবং তার বেশি আপের জন্য সমর্থিত
এসডিকে সমস্ত সংস্করণের জন্য সমর্থিত
সুতরাং আমি করি:
String sdk_version_number = android.os.Build.VERSION.SDK;
: থেকে ক্রেডিট CommonsWare এই উপর উত্তর
আমি এই সংখ্যাটির চেয়ে ভার্সনটি হ্যান্ডেল করার চেয়ে বেশি পছন্দ করি যা আমি এটি লিখেছি:
public static float getAPIVerison() {
Float f = null;
try {
StringBuilder strBuild = new StringBuilder();
strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2));
f = new Float(strBuild.toString());
} catch (NumberFormatException e) {
Log.e("", "error retriving api version" + e.getMessage());
}
return f.floatValue();
}
আমি ব্যবহৃত কোডটি উন্নত করেছি
public static float getAPIVerison() {
float f=1f;
try {
StringBuilder strBuild = new StringBuilder();
strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2));
f= Float.valueOf(strBuild.toString());
} catch (NumberFormatException e) {
Log.e("myApp", "error retriving api version" + e.getMessage());
}
return f;
}