diff --git a/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/pages/gms/GoogleServicesPage.java b/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/pages/gms/GoogleServicesPage.java
index 4a832b3..75b8f75 100644
--- a/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/pages/gms/GoogleServicesPage.java
+++ b/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/pages/gms/GoogleServicesPage.java
@@ -23,12 +23,10 @@
 import android.support.test.uiautomator.By;
 import android.support.test.uiautomator.BySelector;
 import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiScrollable;
-import android.support.test.uiautomator.UiSelector;
-import android.widget.ScrollView;
 
 import com.android.afwtest.common.test.TestConfig;
 import com.android.afwtest.uiautomator.pages.UiPage;
+import com.android.afwtest.uiautomator.utils.Device;
 import com.android.afwtest.uiautomator.utils.WidgetUtils;
 
 import java.io.IOException;
@@ -85,10 +83,14 @@
 
         WidgetUtils.waitAndClick(getUiDevice(), GMS_CHECK_BOX_SELECTOR, DEFAULT_TIMEOUT_MS);
 
-        // Scroll down
-        UiScrollable page = new UiScrollable(
-                new UiSelector().className(ScrollView.class.getName()));
-        page.flingToEnd(5);
+        // Scroll up so that the Next button appears.
+        for (int i = 0; i < 5; ++i) {
+            Device.swipeUp(getUiDevice());
+            if (WidgetUtils.safeWait(getUiDevice(),
+                    GMS_NEXT_BUTTON_RES_SELECTOR, TimeUnit.SECONDS.toMillis(3)) != null) {
+                break;
+            }
+        }
 
         WidgetUtils.waitAndClick(getUiDevice(), GMS_NEXT_BUTTON_RES_SELECTOR, DEFAULT_TIMEOUT_MS);
     }
diff --git a/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/utils/Device.java b/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/utils/Device.java
new file mode 100644
index 0000000..f462718
--- /dev/null
+++ b/libs/UiAutomatorLib/src/com/android/afwtest/uiautomator/utils/Device.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.afwtest.uiautomator.utils;
+
+import android.support.test.uiautomator.UiDevice;
+
+/**
+ * Device related util functions.
+ */
+public final class Device {
+    /**
+     * Swipes screen down for half page.
+     *
+     * @param uiDevice {@link UiDevice} object
+     */
+    public static void swipeDown(UiDevice device) {
+        int width = device.getDisplayWidth();
+        int height = device.getDisplayHeight();
+        device.swipe(width / 2, height / 4, width / 2, height * 3 / 4, 10);
+    }
+
+    /**
+     * Swipes screen up for half page.
+     *
+     * @param uiDevice {@link UiDevice} object
+     */
+    public static void swipeUp(UiDevice device) {
+        int width = device.getDisplayWidth();
+        int height = device.getDisplayHeight();
+        device.swipe(width / 2, height * 3 / 4, width / 2, height / 4, 10);
+    }
+}
\ No newline at end of file
