Pregunta Android: obtenga TargetSDKVersion en tiempo de ejecución


¿Puedo obtener la TargetSDKVersion usada en tiempo de ejecución?

Esto se debe al hecho de que WebView en la API de Android 19> maneja los píxeles de forma diferente que antes del 19.

Esto es para una biblioteca y no me gustaría que el desarrollador la ingrese manualmente.

Mi comentario: Estoy usando mi Nexus 5 API 21 Lollipop. Cambiar TargetSDKVersion cambia la forma en que javascript de html lee los anchos por un múltiplo de la densidad de la pantalla. Acabo de cambiarlo a 14 y luego a 19, y lo confirmo.


5
2018-02-02 14:17


origen


Respuestas:


Acerca de la versión del SDK de destino, mira la clase ApplicationInfo (obténgalo de aquí)

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

O

Si hablamos de la versión del sistema operativo del dispositivo

La clase de compilación contiene información sobre la versión 

android.os.Build.VERSION.SDK_INT

6
2018-02-02 14:28



Esta es otra manera de obtener el targetSdkVersionde mi aplicación en tiempo de ejecución, usando Android Studio:

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

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

El valor de targetSDKVersion se define en mi build.gradle archivo

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

6
2018-05-20 14:51



En mi caso, he hecho esto.

int targetSdkVersion = getApplicationContext().getApplicationInfo().targetSdkVersion;

4
2018-05-26 09:11



Tener la siguiente configuración en un teléfono Android Marshmallow (API 23):

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

Otro enfoque directo para obtener el aplicación actual  targetSdkVersion es:

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

1
2018-05-26 09:03