Fix crash when support item is clicked.
Check for existing activity to handle the support item intent before
adding it to support tile or trying to launch the activity.
Change-Id: I42a733c2d862b303773aeee1ba3b21b718e59066
Fixes: 29118295
diff --git a/src/com/android/settings/dashboard/SupportItemAdapter.java b/src/com/android/settings/dashboard/SupportItemAdapter.java
index c5ff2a6..4ee28c6 100644
--- a/src/com/android/settings/dashboard/SupportItemAdapter.java
+++ b/src/com/android/settings/dashboard/SupportItemAdapter.java
@@ -23,6 +23,7 @@
import android.app.DialogFragment;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
@@ -136,7 +137,8 @@
public void onItemClicked(int position) {
if (position >= 0 && position < mSupportData.size()) {
final SupportData data = mSupportData.get(position);
- if (data.intent != null) {
+ if (data.intent != null &&
+ mActivity.getPackageManager().resolveActivity(data.intent, 0) != null) {
if (data.metricsEvent >= 0) {
MetricsLogger.action(mActivity, data.metricsEvent);
}
@@ -283,18 +285,25 @@
private void addMoreHelpItems() {
mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE_SPACER).build());
- mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE)
- .setIcon(R.drawable.ic_help_24dp)
- .setTileTitle(R.string.support_help_feedback_title)
- .setIntent(mSupportFeatureProvider.getHelpIntent(mActivity))
- .setMetricsEvent(MetricsProto.MetricsEvent.ACTION_SUPPORT_HELP_AND_FEEDBACK)
- .build());
- mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE)
- .setIcon(R.drawable.ic_lightbulb_outline_24)
- .setTileTitle(R.string.support_tips_and_tricks_title)
- .setIntent(mSupportFeatureProvider.getTipsAndTricksIntent(mActivity))
- .setMetricsEvent(MetricsProto.MetricsEvent.ACTION_SUPPORT_TIPS_AND_TRICKS)
- .build());
+ PackageManager packageManager = mActivity.getPackageManager();
+ Intent intent = mSupportFeatureProvider.getHelpIntent(mActivity);
+ if (packageManager.resolveActivity(intent, 0) != null) {
+ mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE)
+ .setIcon(R.drawable.ic_help_24dp)
+ .setTileTitle(R.string.support_help_feedback_title)
+ .setIntent(intent)
+ .setMetricsEvent(MetricsProto.MetricsEvent.ACTION_SUPPORT_HELP_AND_FEEDBACK)
+ .build());
+ }
+ intent = mSupportFeatureProvider.getTipsAndTricksIntent(mActivity);
+ if (packageManager.resolveActivity(intent, 0) != null) {
+ mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE)
+ .setIcon(R.drawable.ic_lightbulb_outline_24)
+ .setTileTitle(R.string.support_tips_and_tricks_title)
+ .setIntent(intent)
+ .setMetricsEvent(MetricsProto.MetricsEvent.ACTION_SUPPORT_TIPS_AND_TRICKS)
+ .build());
+ }
}
private void bindEscalationOptions(ViewHolder holder, EscalationData data) {