OSDN Git Service

Allow 3P apps to provide structured data within AssistContent.
authorChirag Shah <chirags@google.com>
Mon, 15 Jun 2015 20:09:38 +0000 (13:09 -0700)
committerChirag Shah <chirags@google.com>
Tue, 16 Jun 2015 00:48:41 +0000 (17:48 -0700)
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
api/system-current.txt
core/java/android/app/AssistContent.java

index 72b5ca4..34513cc 100644 (file)
@@ -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);
   }
 
index 6ef78d0..2357f67 100644 (file)
@@ -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);
   }
 
index 0df9ce5..ad2ba39 100644 (file)
@@ -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 <a href="http://json-ld.org/">JSON-LD</a> using the
+     * <a href="http://schema.org/">schema.org</a> 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);
     }