From 080c8542b68cf17a0441862c404cb49ce0e86cfe Mon Sep 17 00:00:00 2001 From: Abodunrinwa Toki Date: Tue, 27 Mar 2018 00:04:06 +0100 Subject: TextClassifier API updates. 1. Wraps TC queries in Request objects 2. Adds create/destroyTextClassificationSession system APIs 3. Adds the session Ids to system API calls 4. Change setSignature() to setId() on result objects 5. Plumbing to make the API updates work as things currently work 6. Hide Linkify.addLinksAsync APIs Bug: 74461129 Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest Test: bit CtsViewTestCases:android.view.textclassifier.cts.TextClassificationManagerTest Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationTest Test: bit FrameworksCoreTests:android.view.textclassifier.TextSelectionTest Test: bit FrameworksCoreTests:android.view.textclassifier.TextLinksTest Change-Id: I933ada8b37ef9893331a265e3b4fc08e043f1029 --- core/java/android/widget/TextView.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'core/java/android/widget/TextView.java') diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 8bf497e0e90d..11db6b650583 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -36,6 +36,7 @@ import android.annotation.StringRes; import android.annotation.StyleRes; import android.annotation.XmlRes; import android.app.Activity; +import android.app.PendingIntent; import android.app.assist.AssistStructure; import android.content.ClipData; import android.content.ClipDescription; @@ -11541,6 +11542,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Returns a session-aware text classifier. + * This method creates one if none already exists or the current one is destroyed. */ @NonNull TextClassifier getTextClassificationSession() { @@ -11623,15 +11625,20 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final int start = spanned.getSpanStart(clickedSpan); final int end = spanned.getSpanEnd(clickedSpan); if (start >= 0 && end <= mText.length() && start < end) { - final TextClassification.Options options = new TextClassification.Options() - .setDefaultLocales(getTextLocales()); + final TextClassification.Request request = new TextClassification.Request.Builder( + mText, start, end) + .setDefaultLocales(getTextLocales()) + .build(); final Supplier supplier = () -> - getTextClassifier().classifyText(mText, start, end, options); + getTextClassifier().classifyText(request); final Consumer consumer = classification -> { if (classification != null) { - final Intent intent = classification.getIntent(); - if (intent != null) { - TextClassification.fireIntent(mContext, intent); + if (!classification.getActions().isEmpty()) { + try { + classification.getActions().get(0).getActionIntent().send(); + } catch (PendingIntent.CanceledException e) { + Log.e(LOG_TAG, "Error sending PendingIntent", e); + } } else { Log.d(LOG_TAG, "No link action to perform"); } -- cgit v1.2.3