我能在运行时获取已使用的TargetSDKVersion吗?
这是因为Android API 19以上版本的WebView与之前的版本处理像素方式不同。
由于这是用于库的,因此我不希望开发人员手动输入。
我的评论: 我正在使用我的Nexus 5 API 21 Lollipop。更改TargetSDKVersion会改变html中javascript读取宽度的方式,以屏幕密度的倍数进行计算。我刚刚将其更改为14,然后更改为19,并进行了确认。
我能在运行时获取已使用的TargetSDKVersion吗?
这是因为Android API 19以上版本的WebView与之前的版本处理像素方式不同。
由于这是用于库的,因此我不希望开发人员手动输入。
我的评论: 我正在使用我的Nexus 5 API 21 Lollipop。更改TargetSDKVersion会改变html中javascript读取宽度的方式,以屏幕密度的倍数进行计算。我刚刚将其更改为14,然后更改为19,并进行了确认。
在我的情况下,我已经完成了这个
int targetSdkVersion = getApplicationContext().getApplicationInfo().targetSdkVersion;
有关目标SDK版本,请查看ApplicationInfo类(可从此处获取)
int version = 0;
IPackageManager pm = AppGlobals.getPackageManager();
try {
ApplicationInfo applicationInfo = pm.getApplicationInfo(yourAppName, 0);
if (applicationInfo != null) {
version = applicationInfo.targetSdkVersion;
}
}
或者
如果我们谈论设备操作系统版本
android.os.Build.VERSION.SDK_INT
这是另一种在运行时获取我的应用程序的targetSdkVersion
的方法,使用Android Studio
:
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
int targetSdkVersion = packageInfo.applicationInfo.targetSdkVersion;
}
catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
targetSDKVersion
的值被定义在我的 build.gradle
文件中。
defaultConfig {
applicationId "com.tuna.hello.androidstudioapplication"
minSdkVersion 9
targetSdkVersion 22
versionCode 12
versionName "1.0"
}
defaultConfig {
applicationId "com.mytestapp"
minSdkVersion 9
targetSdkVersion 22
versionCode 1
versionName "1.0.0"
}
Context mContext = getApplicationContext();
int targetSdkVersion = mContext.getApplicationInfo().targetSdkVersion; // Outputs 22
int mobileSdkVersion = Build.VERSION.SDK_INT; // Outputs 23
你甚至可以在运行时设置它:
applicationInfo.targetSdkVersion = 32