Only show 2-pane deep link when homepage is available

DeepLinkHomepageActivity is disabled by default and may be
enabled after receiving the PRE_BOOT_COMPLETED broadcast.

On some virtual devices, DeepLinkHomepageActivity may not
be enabled for test cases. This is a fallback option to
show a full screen Activity to pass tests.

Bug: 221149428
Test: make RunSettingsRoboTests ROBOTEST_FILTER=SettingsActivityTest
Change-Id: I4bbe785176fe3fe8831484141aff7367e4ca25ce
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index d9dc590..37d4a4e 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -24,6 +24,7 @@
 
 import android.app.ActionBar;
 import android.app.ActivityManager;
+import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -253,8 +254,7 @@
         getMetaData();
         final Intent intent = getIntent();
 
-        if (shouldShowTwoPaneDeepLink(intent)) {
-            launchHomepageForTwoPaneDeepLink(intent);
+        if (shouldShowTwoPaneDeepLink(intent) && tryStartTwoPaneDeepLink(intent)) {
             finishAndRemoveTask();
             super.onCreate(savedState);
             return;
@@ -412,7 +412,7 @@
         return trampolineIntent;
     }
 
-    private void launchHomepageForTwoPaneDeepLink(Intent intent) {
+    private boolean tryStartTwoPaneDeepLink(Intent intent) {
         final Intent trampolineIntent;
         if (intent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) {
             // Get menu key for slice deep link case.
@@ -426,7 +426,14 @@
         } else {
             trampolineIntent = getTrampolineIntent(intent, mHighlightMenuKey);
         }
-        startActivity(trampolineIntent);
+
+        try {
+            startActivity(trampolineIntent);
+        } catch (ActivityNotFoundException e) {
+            Log.e(LOG_TAG, "Deep link homepage is not available to show 2-pane UI");
+            return false;
+        }
+        return true;
     }
 
     private boolean shouldShowTwoPaneDeepLink(Intent intent) {