Update sample browseables

Synced to developers/samples/android commit
121d61a3334fd4999d3cb6553f2356eb8893d19b.

Change-Id: I9a8cebc4b0de0e704b1f2172d57a18420cc96b92
diff --git a/samples/browseable/NfcProvisioning/src/com.example.android.nfcprovisioning/NfcProvisioningFragment.java b/samples/browseable/NfcProvisioning/src/com.example.android.nfcprovisioning/NfcProvisioningFragment.java
index f46d0f2..3aef617 100644
--- a/samples/browseable/NfcProvisioning/src/com.example.android.nfcprovisioning/NfcProvisioningFragment.java
+++ b/samples/browseable/NfcProvisioning/src/com.example.android.nfcprovisioning/NfcProvisioningFragment.java
@@ -123,6 +123,12 @@
                 properties.put(e.getKey(), value);
             }
         }
+        // Make sure to put local time in the properties. This is necessary on some devices to
+        // reliably download the device owner APK from an HTTPS connection.
+        if (!properties.contains(DevicePolicyManager.EXTRA_PROVISIONING_LOCAL_TIME)) {
+            properties.put(DevicePolicyManager.EXTRA_PROVISIONING_LOCAL_TIME,
+                    String.valueOf(System.currentTimeMillis()));
+        }
         try {
             properties.store(stream, getString(R.string.nfc_comment));
             NdefRecord record = NdefRecord.createMime(
diff --git a/samples/browseable/StorageClient/src/com.example.android.storageclient/StorageClientFragment.java b/samples/browseable/StorageClient/src/com.example.android.storageclient/StorageClientFragment.java
index 7f9f73e..97733b0 100644
--- a/samples/browseable/StorageClient/src/com.example.android.storageclient/StorageClientFragment.java
+++ b/samples/browseable/StorageClient/src/com.example.android.storageclient/StorageClientFragment.java
@@ -117,69 +117,27 @@
             // Since the URI is to an image, create and show a DialogFragment to display the
             // image to the user.
             FragmentManager fm = getActivity().getSupportFragmentManager();
-            ImageDialogFragment imageDialog = new ImageDialogFragment(uri);
+            ImageDialogFragment imageDialog = new ImageDialogFragment();
+            Bundle fragmentArguments = new Bundle();
+            fragmentArguments.putParcelable("URI", uri);
+            imageDialog.setArguments(fragmentArguments);
             imageDialog.show(fm, "image_dialog");
         }
         // END_INCLUDE (create_show_image_dialog)
     }
 
-    /**
-     * Grabs metadata for a document specified by URI, logs it to the screen.
-     *
-     * @param uri The uri for the document whose metadata should be printed.
-     */
-    public void dumpImageMetaData(Uri uri) {
-        // BEGIN_INCLUDE (dump_metadata)
-
-        // The query, since it only applies to a single document, will only return one row.
-        // no need to filter, sort, or select fields, since we want all fields for one
-        // document.
-        Cursor cursor = getActivity().getContentResolver()
-                .query(uri, null, null, null, null, null);
-
-        try {
-        // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
-        // "if there's anything to look at, look at it" conditionals.
-            if (cursor != null && cursor.moveToFirst()) {
-
-                // Note it's called "Display Name".  This is provider-specific, and
-                // might not necessarily be the file name.
-                String displayName = cursor.getString(
-                        cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
-                Log.i(TAG, "Display Name: " + displayName);
-
-                int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
-                // If the size is unknown, the value stored is null.  But since an int can't be
-                // null in java, the behavior is implementation-specific, which is just a fancy
-                // term for "unpredictable".  So as a rule, check if it's null before assigning
-                // to an int.  This will happen often:  The storage API allows for remote
-                // files, whose size might not be locally known.
-                String size = null;
-                if (!cursor.isNull(sizeIndex)) {
-                    // Technically the column stores an int, but cursor.getString will do the
-                    // conversion automatically.
-                    size = cursor.getString(sizeIndex);
-                } else {
-                    size = "Unknown";
-                }
-                Log.i(TAG, "Size: " + size);
-            }
-        } finally {
-            cursor.close();
-        }
-        // END_INCLUDE (dump_metadata)
-    }
 
     /**
      * DialogFragment which displays an image, given a URI.
      */
-    private class ImageDialogFragment extends DialogFragment {
+    public static class ImageDialogFragment extends DialogFragment {
         private Dialog mDialog;
         private Uri mUri;
 
-        public ImageDialogFragment(Uri uri) {
-            super();
-            mUri = uri;
+        @Override
+        public void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            mUri = getArguments().getParcelable("URI");
         }
 
         /** Create a Bitmap from the URI for that image and return it.
@@ -251,5 +209,54 @@
                 getDialog().dismiss();
             }
         }
+
+        /**
+         * Grabs metadata for a document specified by URI, logs it to the screen.
+         *
+         * @param uri The uri for the document whose metadata should be printed.
+         */
+        public void dumpImageMetaData(Uri uri) {
+            // BEGIN_INCLUDE (dump_metadata)
+
+            // The query, since it only applies to a single document, will only return one row.
+            // no need to filter, sort, or select fields, since we want all fields for one
+            // document.
+            Cursor cursor = getActivity().getContentResolver()
+                    .query(uri, null, null, null, null, null);
+
+            try {
+                // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+                // "if there's anything to look at, look at it" conditionals.
+                if (cursor != null && cursor.moveToFirst()) {
+
+                    // Note it's called "Display Name".  This is provider-specific, and
+                    // might not necessarily be the file name.
+                    String displayName = cursor.getString(
+                            cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+                    Log.i(TAG, "Display Name: " + displayName);
+
+                    int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+                    // If the size is unknown, the value stored is null.  But since an int can't be
+                    // null in java, the behavior is implementation-specific, which is just a fancy
+                    // term for "unpredictable".  So as a rule, check if it's null before assigning
+                    // to an int.  This will happen often:  The storage API allows for remote
+                    // files, whose size might not be locally known.
+                    String size = null;
+                    if (!cursor.isNull(sizeIndex)) {
+                        // Technically the column stores an int, but cursor.getString will do the
+                        // conversion automatically.
+                        size = cursor.getString(sizeIndex);
+                    } else {
+                        size = "Unknown";
+                    }
+                    Log.i(TAG, "Size: " + size);
+                }
+            } finally {
+                if (cursor != null) {
+                    cursor.close();
+                }
+            }
+            // END_INCLUDE (dump_metadata)
+        }
     }
 }