Merge "Fix an issue that clicking on a smart action chip on keyguard ... failed to launch app resolver when there are more than one app handlers." into qt-dev

am: 78a48f5512

Change-Id: Ic7dd0c9f952e905c8f42001276f3def6e1797b70
This commit is contained in:
Tony Mak
2019-06-06 02:39:33 -07:00
committed by android-build-merger
3 changed files with 41 additions and 5 deletions

View File

@@ -19,7 +19,9 @@ package android.view.textclassifier;
import android.annotation.Nullable;
import android.app.Person;
import android.app.RemoteAction;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Pair;
@@ -200,10 +202,12 @@ public final class ActionsSuggestionsHelper {
if (remoteAction == null) {
return null;
}
Intent actionIntent = ExtrasUtils.getActionIntent(conversationAction.getExtras());
ComponentName componentName = actionIntent.getComponent();
// Action without a component name will be considered as from the same app.
String packageName = componentName == null ? null : componentName.getPackageName();
return new Pair<>(
conversationAction.getAction().getTitle().toString(),
ExtrasUtils.getActionIntent(
conversationAction.getExtras()).getComponent().getPackageName());
conversationAction.getAction().getTitle().toString(), packageName);
}
private static final class PersonEncoder {

View File

@@ -118,14 +118,16 @@ public final class LabeledIntent {
return null;
}
Intent resolvedIntent = new Intent(intent);
resolvedIntent.setComponent(new ComponentName(packageName, className));
resolvedIntent.putExtra(
TextClassifier.EXTRA_FROM_TEXT_CLASSIFIER,
getFromTextClassifierExtra(textLanguagesBundle));
boolean shouldShowIcon = false;
Icon icon = null;
if (!"android".equals(packageName)) {
// We only set the component name when the package name is not resolved to "android"
// to workaround a bug that explicit intent with component name == ResolverActivity
// can't be launched on keyguard.
resolvedIntent.setComponent(new ComponentName(packageName, className));
if (resolveInfo.activityInfo.getIconResource() != 0) {
icon = Icon.createWithResource(
packageName, resolveInfo.activityInfo.getIconResource());