From b496064efab47743fff4eb22f68e3acb3315fd9d Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 23 Aug 2021 11:11:22 +0300 Subject: Android: guard getStateCount() with correct VERSION.SDK_INT The call getStateCount() was introduced in 29, so cases for lower API should be handled. (Cherry picked from commit 538c7855e7d369a3d5aab9eb9815172847dd4e84) Conflicts: src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java Change-Id: Ic1b9d018e1a0ec6a72a394bd14d3566b7fdb5258 Reviewed-by: Assam Boudjelthia --- .../jar/src/org/qtproject/qt/android/ExtractStyle.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/android/jar/src/org') 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 230895f0ba..9c569a5569 100644 --- a/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java +++ b/src/android/jar/src/org/qtproject/qt/android/ExtractStyle.java @@ -508,10 +508,13 @@ public class ExtractStyle { JSONObject json = new JSONObject(); try { StateListDrawable stateList = (StateListDrawable) drawable; - final int numStates = (Integer) StateListDrawable.class.getMethod("getStateCount").invoke(stateList); - JSONArray array =new JSONArray(); - for (int i = 0; i < numStates; i++) - { + JSONArray array = new JSONArray(); + 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); -- cgit v1.2.3