diff options
-rw-r--r-- | src/com/google/android/droiddriver/instrumentation/InstrumentationDriver.java | 8 | ||||
-rw-r--r-- | src/com/google/android/droiddriver/instrumentation/RootFinder.java | 14 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/com/google/android/droiddriver/instrumentation/InstrumentationDriver.java b/src/com/google/android/droiddriver/instrumentation/InstrumentationDriver.java index 8804211..6fd3ae7 100644 --- a/src/com/google/android/droiddriver/instrumentation/InstrumentationDriver.java +++ b/src/com/google/android/droiddriver/instrumentation/InstrumentationDriver.java @@ -29,6 +29,8 @@ import com.google.android.droiddriver.exceptions.TimeoutException; import com.google.android.droiddriver.util.ActivityUtils; import com.google.android.droiddriver.util.Logs; +import java.util.List; + /** * Implementation of DroidDriver that is driven via instrumentation. */ @@ -65,9 +67,9 @@ public class InstrumentationDriver extends BaseDroidDriver<View, ViewElement> { @Override public void run() { try { - View[] views = RootFinder.getRootViews(); - if (views.length > 1) { - Logs.log(Log.VERBOSE, "views.length=" + views.length); + List<View> views = RootFinder.getRootViews(); + if (views.size() > 1) { + Logs.log(Log.VERBOSE, "views.size()=" + views.size()); for (View view : views) { if (view.hasWindowFocus()) { rootView = view; diff --git a/src/com/google/android/droiddriver/instrumentation/RootFinder.java b/src/com/google/android/droiddriver/instrumentation/RootFinder.java index eec06c0..b880c3a 100644 --- a/src/com/google/android/droiddriver/instrumentation/RootFinder.java +++ b/src/com/google/android/droiddriver/instrumentation/RootFinder.java @@ -25,6 +25,9 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; + /** * Class to find the root view. */ @@ -71,11 +74,16 @@ public class RootFinder { /** * @return a list of {@link View}s. */ - public static View[] getRootViews() { - View[] views = null; + @SuppressWarnings("unchecked") + public static List<View> getRootViews() { + List<View> views = null; try { - views = (View[]) viewsField.get(windowManagerObj); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + views = (List<View>) viewsField.get(windowManagerObj); + } else { + views = Arrays.asList((View[]) viewsField.get(windowManagerObj)); + } return views; } catch (RuntimeException re) { throw new DroidDriverException(String.format("Reflective access to %s on %s failed.", |