From 61f794a70ffb05a343ef8fda91f3fd7ca5ac59f7 Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Mon, 15 Jun 2015 13:09:38 -0700 Subject: [PATCH] Allow 3P apps to provide structured data within AssistContent. For providing structured metadata to the assistant, we've decided to standardize on JSON-LD (met with Paige/Ulas/Fabian), and decided the data to be specified via: AssistContent.setStructuredData(String structuredDataJson) This method can be documented for 3P developers as allowing developers to provide metadata to the assistant with the JSON-LD standard. This would be centered more about content displayed on the screen, rather than actions based, so we added it to the AssistContent class Updated doc: go/setStructuredData Change-Id: I816f69fd6896df822e30d6c71d840bd01f47e544 --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ core/java/android/app/AssistContent.java | 26 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/api/current.txt b/api/current.txt index 72b5ca44643c..34513cc1148e 100644 --- a/api/current.txt +++ b/api/current.txt @@ -4019,10 +4019,12 @@ package android.app { ctor public AssistContent(); method public android.content.ClipData getClipData(); method public android.os.Bundle getExtras(); + method public java.lang.String getStructuredData(); method public android.net.Uri getWebUri(); method public boolean isAppProvidedIntent(); method public void setClipData(android.content.ClipData); method public void setIntent(android.content.Intent); + method public void setStructuredData(java.lang.String); method public void setWebUri(android.net.Uri); } diff --git a/api/system-current.txt b/api/system-current.txt index 6ef78d07422a..2357f6771cce 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4114,10 +4114,12 @@ package android.app { ctor public AssistContent(); method public android.content.ClipData getClipData(); method public android.os.Bundle getExtras(); + method public java.lang.String getStructuredData(); method public android.net.Uri getWebUri(); method public boolean isAppProvidedIntent(); method public void setClipData(android.content.ClipData); method public void setIntent(android.content.Intent); + method public void setStructuredData(java.lang.String); method public void setWebUri(android.net.Uri); } diff --git a/core/java/android/app/AssistContent.java b/core/java/android/app/AssistContent.java index 0df9ce5b1dd9..ad2ba39761da 100644 --- a/core/java/android/app/AssistContent.java +++ b/core/java/android/app/AssistContent.java @@ -33,6 +33,7 @@ import android.os.Parcelable; public class AssistContent { private boolean mIsAppProvidedIntent = false; private Intent mIntent; + private String mStructuredData; private ClipData mClipData; private Uri mUri; private final Bundle mExtras; @@ -125,6 +126,22 @@ public class AssistContent { } /** + * Sets optional structured data regarding the content being viewed. The provided data + * must be a string represented with JSON-LD using the + * schema.org vocabulary. + */ + public void setStructuredData(String structuredData) { + mStructuredData = structuredData; + } + + /** + * Returns the current {@link #setStructuredData}. + */ + public String getStructuredData() { + return mStructuredData; + } + + /** * Set a web URI associated with the current data being shown to the user. * This URI could be opened in a web browser, or in the app as an * {@link Intent#ACTION_VIEW} Intent, to show the same data that is currently @@ -163,6 +180,9 @@ public class AssistContent { if (in.readInt() != 0) { mUri = Uri.CREATOR.createFromParcel(in); } + if (in.readInt() != 0) { + mStructuredData = in.readString(); + } mIsAppProvidedIntent = in.readInt() == 1; mExtras = in.readBundle(); } @@ -187,6 +207,12 @@ public class AssistContent { } else { dest.writeInt(0); } + if (mStructuredData != null) { + dest.writeInt(1); + dest.writeString(mStructuredData); + } else { + dest.writeInt(0); + } dest.writeInt(mIsAppProvidedIntent ? 1 : 0); dest.writeBundle(mExtras); } -- 2.11.0