Check SearchManager presence and state for disable of SearchManager tests

BUG: 30075369
Change-Id: I9d3d27321472e174825962c80f34b742b073f2b0
diff --git a/tests/app/src/android/app/cts/SearchManagerTest.java b/tests/app/src/android/app/cts/SearchManagerTest.java
index 13a8073..b1b5623 100644
--- a/tests/app/src/android/app/cts/SearchManagerTest.java
+++ b/tests/app/src/android/app/cts/SearchManagerTest.java
@@ -16,11 +16,11 @@
 
 package android.app.cts;
 
+import android.app.SearchManager;
 import android.app.stubs.CTSActivityTestCaseBase;
 import android.app.stubs.SearchManagerStubActivity;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 
 public class SearchManagerTest extends CTSActivityTestCaseBase {
 
@@ -33,7 +33,7 @@
     }
 
     public void testStopSearch() throws InterruptedException {
-        if (isTelevision()) {
+        if (!hasGlobalSearchActivity()) {
             return;
         }
         SearchManagerStubActivity.setCTSResult(this);
@@ -42,7 +42,7 @@
     }
 
     public void testSetOnDismissListener() throws InterruptedException {
-        if (isTelevision()) {
+        if (!hasGlobalSearchActivity()) {
             return;
         }
         SearchManagerStubActivity.setCTSResult(this);
@@ -51,7 +51,7 @@
     }
 
     public void testSetOnCancelListener() throws InterruptedException {
-        if (isTelevision()) {
+        if (!hasGlobalSearchActivity()) {
             return;
         }
         SearchManagerStubActivity.setCTSResult(this);
@@ -59,10 +59,18 @@
         waitForResult();
     }
 
-    private boolean isTelevision() {
+    private boolean hasGlobalSearchActivity() {
         Context context = getInstrumentation().getTargetContext();
-        PackageManager pm = context.getPackageManager();
-        return pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
-                || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
+        SearchManager searchManager =
+                (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
+        if (searchManager == null) {
+            return false;
+        }
+        try {
+            return searchManager.getGlobalSearchActivity() != null;
+        } catch (NullPointerException e) {
+            // Means there is no internal search service.
+            return false;
+        }
     }
 }