Clean up ClipData manipulation code

Bug:20556237
Change-Id: If32e952ebb75b7d1a7e6f15604ce5c3be5372e6b
diff --git a/src/com/android/documentsui/DirectoryFragment.java b/src/com/android/documentsui/DirectoryFragment.java
index 7d737ca..d85db72 100644
--- a/src/com/android/documentsui/DirectoryFragment.java
+++ b/src/com/android/documentsui/DirectoryFragment.java
@@ -1208,8 +1208,9 @@
     private void copyFromClipData(ClipData clipData, DocumentInfo dstDir) {
         final List<DocumentInfo> srcDocs = getDocumentsFromClipData(clipData);
 
-        if (srcDocs.isEmpty())
+        if (srcDocs.isEmpty()) {
             return;
+        }
 
         final DocumentStack curStack = getDisplayState(this).stack;
         DocumentStack tmpStack = new DocumentStack();
@@ -1234,12 +1235,17 @@
             ClipData.Item item = clipData.getItemAt(i);
             Uri itemUri = item.getUri();
             if (itemUri != null && DocumentsContract.isDocumentUri(context, itemUri)) {
+                ContentProviderClient client = null;
                 try {
-                    Cursor cursor = resolver.query(itemUri, null, null, null, null);
+                    client = DocumentsApplication.acquireUnstableProviderOrThrow(
+                            resolver, itemUri.getAuthority());
+                    Cursor cursor = client.query(itemUri, null, null, null, null);
                     cursor.moveToPosition(0);
                     srcDocs.add(DocumentInfo.fromCursor(cursor, itemUri.getAuthority()));
                 } catch (Exception e) {
                     Log.e(TAG, e.getMessage());
+                } finally {
+                    ContentProviderClient.releaseQuietly(client);
                 }
             }
         }
@@ -1254,7 +1260,10 @@
         for (DocumentInfo doc : docs) {
             final Uri uri = DocumentsContract.buildDocumentUri(doc.authority, doc.documentId);
             if (clipData == null) {
-                clipData = ClipData.newUri(resolver, "", uri);
+                // TODO: figure out what this string should be.
+                // Currently it is not displayed anywhere in the UI, but this might change.
+                final String label = "";
+                clipData = ClipData.newUri(resolver, label, uri);
             } else {
                 // TODO: update list of mime types in ClipData.
                 clipData.addItem(new ClipData.Item(uri));