diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-11-27 21:51:45 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-11-27 21:51:45 +0000 |
| commit | e3a6d9450ad7e166a50949ccacaa5847a373b459 (patch) | |
| tree | 7ff59c8367f0e192d1bae2e64b1420e3db2728d6 /core/java | |
| parent | 67d97b4bf33882a9dc3afa1e234a9cc207b836b3 (diff) | |
| parent | e1f3ac064c2df9f70a9ac356314275273ef2ff97 (diff) | |
Merge "Add "dictionary" entity type"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/content/Intent.java | 10 | ||||
| -rw-r--r-- | core/java/android/view/textclassifier/TextClassifier.java | 6 | ||||
| -rw-r--r-- | core/java/android/view/textclassifier/TextClassifierImpl.java | 24 |
3 files changed, 37 insertions, 3 deletions
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 6bfddb06ca88..e7f0053721d1 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3601,6 +3601,16 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_TRANSLATE = "android.intent.action.TRANSLATE"; /** + * Activity Action: Define the meaning of the selected word(s). + * <p> + * Input: {@link #EXTRA_TEXT getCharSequence(EXTRA_TEXT)} is the text to define. + * <p> + * Output: nothing. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_DEFINE = "android.intent.action.DEFINE"; + + /** * Broadcast Action: List of dynamic sensor is changed due to new sensor being connected or * exisiting sensor being disconnected. * diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java index 524f70939398..a2536cbd911c 100644 --- a/core/java/android/view/textclassifier/TextClassifier.java +++ b/core/java/android/view/textclassifier/TextClassifier.java @@ -90,6 +90,11 @@ public interface TextClassifier { String TYPE_DATE_TIME = "datetime"; /** Flight number in IATA format. */ String TYPE_FLIGHT_NUMBER = "flight"; + /** + * Word that users may be interested to look up for meaning. + * @hide + */ + String TYPE_DICTIONARY = "dictionary"; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -103,6 +108,7 @@ public interface TextClassifier { TYPE_DATE, TYPE_DATE_TIME, TYPE_FLIGHT_NUMBER, + TYPE_DICTIONARY }) @interface EntityType {} diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java index 74678df00cb6..8e14dfdb7ee3 100644 --- a/core/java/android/view/textclassifier/TextClassifierImpl.java +++ b/core/java/android/view/textclassifier/TextClassifierImpl.java @@ -42,6 +42,7 @@ import android.provider.CalendarContract; import android.provider.ContactsContract; import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; @@ -57,6 +58,7 @@ import java.net.URLEncoder; import java.time.Instant; import java.time.ZonedDateTime; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -638,7 +640,8 @@ public final class TextClassifierImpl implements TextClassifier { /** * Helper class to store the information from which RemoteActions are built. */ - private static final class LabeledIntent { + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) + public static final class LabeledIntent { static final int DEFAULT_REQUEST_CODE = 0; @@ -673,7 +676,8 @@ public final class TextClassifierImpl implements TextClassifier { return mDescription; } - Intent getIntent() { + @VisibleForTesting + public Intent getIntent() { return mIntent; } @@ -717,7 +721,8 @@ public final class TextClassifierImpl implements TextClassifier { /** * Creates intents based on the classification type. */ - static final class IntentFactory { + @VisibleForTesting + public static final class IntentFactory { private static final long MIN_EVENT_FUTURE_MILLIS = TimeUnit.MINUTES.toMillis(5); private static final long DEFAULT_EVENT_DURATION = TimeUnit.HOURS.toMillis(1); @@ -762,6 +767,9 @@ public final class TextClassifierImpl implements TextClassifier { case TextClassifier.TYPE_FLIGHT_NUMBER: actions = createForFlight(context, text); break; + case TextClassifier.TYPE_DICTIONARY: + actions = createForDictionary(context, text); + break; default: actions = new ArrayList<>(); break; @@ -924,5 +932,15 @@ public final class TextClassifierImpl implements TextClassifier { .putExtra(Intent.EXTRA_TEXT, text), text.hashCode())); } + + @NonNull + private static List<LabeledIntent> createForDictionary(Context context, String text) { + return Arrays.asList(new LabeledIntent( + context.getString(com.android.internal.R.string.define), + context.getString(com.android.internal.R.string.define_desc), + new Intent(Intent.ACTION_DEFINE) + .putExtra(Intent.EXTRA_TEXT, text), + text.hashCode())); + } } } |
