summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-08-23 11:11:22 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-08-23 15:39:44 +0300
commit760e24e8676d52e2851ef8556770194a97eae831 (patch)
treeb2874e82d28e3be36f96d8a22a504fe1c054e51c /src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java
parenteec25c7807c85a77669c37372cfbe13e556c3bae (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: 6.2 6.1 Change-Id: I7f58541c0b16fed91835e6f390afa89378a7af3e Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java
index f5c2a6c6ac..8c391a7e7b 100644
--- a/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java
+++ b/src/android/jar/src/org/qtproject/qt/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);