diff options
Diffstat (limited to 'src/com/android/emergency/preferences/ContactPreference.java')
-rw-r--r-- | src/com/android/emergency/preferences/ContactPreference.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/com/android/emergency/preferences/ContactPreference.java b/src/com/android/emergency/preferences/ContactPreference.java index d4549eb..7262a36 100644 --- a/src/com/android/emergency/preferences/ContactPreference.java +++ b/src/com/android/emergency/preferences/ContactPreference.java @@ -16,9 +16,12 @@ package com.android.emergency.preferences; import android.app.AlertDialog; +import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; @@ -38,6 +41,8 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.settingslib.drawable.CircleFramedDrawable; +import java.util.List; + /** * A {@link Preference} to display or call a contact using the specified URI string. @@ -176,6 +181,15 @@ public class ContactPreference extends Preference { public void callContact() { Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mContact.getPhoneNumber())); + PackageManager packageManager = getContext().getPackageManager(); + List<ResolveInfo> infos = + packageManager.queryIntentActivities(callIntent, PackageManager.MATCH_SYSTEM_ONLY); + if (infos == null || infos.isEmpty()) { + return; + } + callIntent.setComponent(new ComponentName(infos.get(0).activityInfo.packageName, + infos.get(0).activityInfo.name)); + MetricsLogger.action(getContext(), MetricsEvent.ACTION_CALL_EMERGENCY_CONTACT); getContext().startActivity(callIntent); } @@ -258,4 +272,4 @@ public class ContactPreference extends Preference { } }; } -}
\ No newline at end of file +} |