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));