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) {