diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-08-23 11:07:19 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-08-23 11:08:58 +0000 |
commit | bbfbb18df18658e8ceec4bc04bd2cdf59f6a35ed (patch) | |
tree | 56b661fb8042806767f59b9e911f86ec09271d45 | |
parent | 9251cf05627702cc161f6029454d53570eb6d907 (diff) |
Android: guard getStateCount() with correct VERSION.SDK_INT
The call getStateCount() was introduced in 29, so cases for
lower API should be handled.
Pick-to: 5.15
Change-Id: I6085209d89e2b40cfa210ef9201df7f340dddb7e
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
-rw-r--r-- | src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java index 0bf9cab627..9dba7f2c2b 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java +++ b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java @@ -69,6 +69,7 @@ import android.graphics.drawable.RotateDrawable; import android.graphics.drawable.ScaleDrawable; import android.graphics.drawable.StateListDrawable; import android.graphics.drawable.VectorDrawable; +import android.os.Build; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; @@ -413,7 +414,12 @@ public class ExtractStyle { try { StateListDrawable stateList = (StateListDrawable) drawable; JSONArray array = new JSONArray(); - for (int i = 0; i < stateList.getStateCount(); i++) { + final int numStates; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) + numStates = (Integer) StateListDrawable.class.getMethod("getStateCount").invoke(stateList); + else + numStates = stateList.getStateCount(); + for (int i = 0; i < numStates; i++) { JSONObject stateJson = new JSONObject(); final Drawable d = (Drawable) StateListDrawable.class.getMethod("getStateDrawable", Integer.TYPE).invoke(stateList, i); final int[] states = (int[]) StateListDrawable.class.getMethod("getStateSet", Integer.TYPE).invoke(stateList, i); |