2015-02-02 16 views
5

Tôi có thể lấy TargetSDKVersion được sử dụng trong thời gian chạy không?Android: Nhận TargetSDKVersion trong thời gian chạy

Điều này là do thực tế là WebView trong Android API 19> xử lý pixel khác biệt so với trước 19.

này là dành cho một thư viện và vì vậy tôi không muốn có các nhà phát triển nhập nó bằng tay.

nhận xét của tôi: Tôi đang sử dụng API 5 API Nexus 5 của tôi. Thay đổi TargetSDKVersion thay đổi cách javascript của html đọc chiều rộng bởi một bội số của mật độ màn hình. Tôi đã thay đổi nó thành 14 rồi đến 19, và tôi xác nhận điều này.

Trả lời

7

About target SDK version, look to the ApplicationInfo class (nhận được nó từ here)

int version = 0; 
IPackageManager pm = AppGlobals.getPackageManager(); 
try { 
    ApplicationInfo applicationInfo = pm.getApplicationInfo(yourAppName, 0); 
    if (applicationInfo != null) { 
     version = applicationInfo.targetSdkVersion; 
    } 
} 

HOẶC

Nếu chúng ta nói về phiên bản hệ điều hành thiết bị

Build class contain information about version

android.os.Build.VERSION.SDK_INT 
+1

này trả về phiên bản API của thiết bị. – zed

+0

@zed Tôi đã cập nhật câu trả lời –

+0

Có vẻ như đó là một giải pháp tuyệt vời. Tôi sẽ kiểm tra nó và đặt làm câu trả lời khi tôi xác nhận. – zed

4

Đây là một w ay để có được những targetSdkVersion của ứng dụng của tôi trong thời gian chạy, sử dụng Android Studio:

try { 
      PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
      int targetSdkVersion = packageInfo.applicationInfo.targetSdkVersion; 

     } 
     catch (PackageManager.NameNotFoundException e) { 
      Log.e(TAG, e.getMessage()); 
     } 

giá trị của targetSDKVersion được xác định vào build.gradle tập tin của tôi

defaultConfig { 
     applicationId "com.tuna.hello.androidstudioapplication" 
     minSdkVersion 9 
     targetSdkVersion 22 
     versionCode 12 
     versionName "1.0" 
    } 
+1

Thực ra đây là cách tiếp cận chính xác như @ Kirill's – zed

1

Có cấu hình sau đây trong một Marshmallow Android (API 23) điện thoại:

defaultConfig { 
     applicationId "com.mytestapp" 
     minSdkVersion 9 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0.0" 
} 

Một cách tiếp cận trực tiếp khác để có được ứng dụng đang chạy thực tếtargetSdkVersion là:

Context mContext = getApplicationContext(); 
int targetSdkVersion = mContext.getApplicationInfo().targetSdkVersion; // Outputs 22 
int mobileSdkVersion = Build.VERSION.SDK_INT; // Outputs 23 
3

Trong trường hợp của tôi, tôi đã làm điều này

int targetSdkVersion = getApplicationContext().getApplicationInfo().targetSdkVersion; 
Các vấn đề liên quan