Android:在运行时获取TargetSDKVersion

zed*_*zed 7 android

我可以在运行时获取使用过的TargetSDKVersion吗?

这是因为Android API 19中的WebView处理像素的方式与19之前不同.

这是一个库,所以我不想让开发人员手动输入它.

我的评论:我正在使用我的Nexus 5 API 21 Lollipop.更改TargetSDKVersion会改变html的javascript读取宽度的方式,屏幕密度的倍数.我刚刚将其更改为14然后更改为19,我确认了这一点.

Kas*_*ala 14

在我的情况下,我做到了这一点

int targetSdkVersion = getApplicationContext().getApplicationInfo().targetSdkVersion;
Run Code Online (Sandbox Code Playgroud)


Kir*_*nov 8

关于目标SDK版本,请查看ApplicationInfo类(从此处获取)

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

要么

如果我们谈论设备操作系统版本

构建类包含有关版本的信息

android.os.Build.VERSION.SDK_INT
Run Code Online (Sandbox Code Playgroud)

  • 但是,什么是AppGlobals? (2认同)

Jor*_*sys 7

这是使用以下方法targetSdkVersion在运行时获取应用程序的另一种方法Android Studio:

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

        }
        catch (PackageManager.NameNotFoundException e) {
            Log.e(TAG, e.getMessage());
        }
Run Code Online (Sandbox Code Playgroud)

值的targetSDKVersion定义在我的build.gradle文件中

   defaultConfig {
        applicationId "com.tuna.hello.androidstudioapplication"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 12
        versionName "1.0"
    }
Run Code Online (Sandbox Code Playgroud)

  • 实际上这是@Kirill的确切方法 (2认同)