DO NOT MERGE Check if package is installed before lauching it in Recent Location Requests

This change removes calling PackageManager.resolveActivity and checks if
the package is installed instead. Calling resolveActivity on apps like Maps and
Assistant returns android, and therefore causing the Android System
AppInfo to launch when clicked on Maps and Assistant in Recent Location Requests.

Bug: 166786767
Test: make, verify Maps in Recent Location Requests launches Maps
AppInfo

Change-Id: I91dbc9e3783c5723220a7e08e6c0f84bb01cf290
(cherry picked from commit 7f25501c3a95a26dfa8ca18f6286b61af8f79250)
diff --git a/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java b/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
index 3b54468..69036ef 100644
--- a/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
+++ b/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
@@ -18,8 +18,7 @@
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ResolveInfo;
+import android.content.pm.PackageManager;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -40,6 +39,7 @@
  */
 public class RecentLocationRequestsPreferenceController extends
         PreferenceController<PreferenceGroup> {
+    private final PackageManager mPackageManager;
     private RecentLocationApps mRecentLocationApps;
     // This list will always be sorted by most recent first.
     private List<Request> mRecentLocationRequests;
@@ -48,6 +48,7 @@
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
         mRecentLocationApps = new RecentLocationApps(context);
+        mPackageManager = context.getPackageManager();
     }
 
     @VisibleForTesting
@@ -95,20 +96,26 @@
         pref.setSummary(request.contentDescription);
         pref.setIcon(request.icon);
         pref.setTitle(request.label);
-        Intent intent = new Intent();
-        intent.setPackage(request.packageName);
-        ResolveInfo resolveInfo = getContext().getPackageManager().resolveActivity(intent, 0);
-        if (resolveInfo != null) {
+        if (isPackageInstalled(request.packageName)) {
             pref.setOnPreferenceClickListener(p -> {
                 getFragmentController().launchFragment(
                         ApplicationDetailsFragment.getInstance(
-                                resolveInfo.activityInfo.packageName));
+                                request.packageName));
                 return true;
             });
         }
         return pref;
     }
 
+    private boolean isPackageInstalled(String packageName) {
+        try {
+            mPackageManager.getPackageInfo(packageName, PackageManager.GET_META_DATA);
+        } catch (PackageManager.NameNotFoundException e) {
+            return false;
+        }
+        return true;
+    }
+
     /**
      * Compares two {@link Request} lists by the elements' package names.
      *