Don't dial any number if DIAL intent is not supported.
Bug: 30868123
Change-Id: Ieb971fdd86011ef0699fdbcfec1ecce2112d0209
diff --git a/src/com/android/settings/dashboard/SupportItemAdapter.java b/src/com/android/settings/dashboard/SupportItemAdapter.java
index 4ee28c6..b5c130c 100644
--- a/src/com/android/settings/dashboard/SupportItemAdapter.java
+++ b/src/com/android/settings/dashboard/SupportItemAdapter.java
@@ -450,9 +450,15 @@
final SupportPhone phone = mSupportFeatureProvider
.getSupportPhones(mSelectedCountry, true /* isTollFree */);
if (phone != null) {
- MetricsLogger.action(mActivity,
- MetricsProto.MetricsEvent.ACTION_SUPPORT_DAIL_TOLLFREE);
- mActivity.startActivity(phone.getDialIntent());
+ final Intent intent = phone.getDialIntent();
+ final boolean canDial = !mActivity.getPackageManager()
+ .queryIntentActivities(intent, 0)
+ .isEmpty();
+ if (canDial) {
+ MetricsLogger.action(mActivity,
+ MetricsProto.MetricsEvent.ACTION_SUPPORT_DAIL_TOLLFREE);
+ mActivity.startActivity(intent);
+ }
}
break;
}
diff --git a/src/com/android/settings/support/SupportPhoneDialogFragment.java b/src/com/android/settings/support/SupportPhoneDialogFragment.java
index 77eb225..4dde547 100644
--- a/src/com/android/settings/support/SupportPhoneDialogFragment.java
+++ b/src/com/android/settings/support/SupportPhoneDialogFragment.java
@@ -15,9 +15,11 @@
*/
package com.android.settings.support;
+import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -68,9 +70,16 @@
@Override
public void onClick(View v) {
final SupportPhone phone = getArguments().getParcelable(EXTRA_PHONE);
- MetricsLogger.action(getActivity(),
- MetricsProto.MetricsEvent.ACTION_SUPPORT_DIAL_TOLLED);
- getActivity().startActivity(phone.getDialIntent());
+ final Activity activity = getActivity();
+ final Intent intent = phone.getDialIntent();
+ final boolean canDial = !activity.getPackageManager()
+ .queryIntentActivities(intent, 0)
+ .isEmpty();
+ if (canDial) {
+ MetricsLogger.action(getActivity(),
+ MetricsProto.MetricsEvent.ACTION_SUPPORT_DIAL_TOLLED);
+ getActivity().startActivity(intent);
+ }
dismiss();
}
}