Hide contact details nav icon if no handler exists

Fix: 174602383
Test: Manual

Change-Id: I5033e7ac7a36598dd6f409511d1392355971f5d0
diff --git a/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java b/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java
index ac7028e..afc5040 100644
--- a/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java
+++ b/src/com/android/car/dialer/ui/contact/ContactDetailsViewHolder.java
@@ -19,6 +19,7 @@
 import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.view.View;
@@ -48,6 +49,8 @@
 import com.bumptech.glide.request.RequestOptions;
 import com.bumptech.glide.request.target.Target;
 
+import java.util.List;
+
 /**
  * ViewHolder for {@link ContactDetailsFragment}.
  */
@@ -202,8 +205,16 @@
 
         mAddressView.setOnClickListener(
                 v -> openMapWithMapIntent(context, postalAddress.getAddressIntent(resources)));
-        mNavigationButton.setOnClickListener(
-                v -> openMapWithMapIntent(context, postalAddress.getNavigationIntent(resources)));
+
+        Intent intent = postalAddress.getNavigationIntent(resources);
+        List<ResolveInfo> infos = context.getPackageManager().queryIntentActivities(intent, 0);
+
+        if (infos.size() > 0) {
+            mNavigationButton.setVisibility(View.VISIBLE);
+            mNavigationButton.setOnClickListener(v -> openMapWithMapIntent(context, intent));
+        } else {
+            mNavigationButton.setVisibility(View.GONE);
+        }
     }
 
     private void openMapWithMapIntent(Context context, Intent mapIntent) {