Merge "Sharesheet - Check number of uris being shared"
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index fbf8091..2009fd50 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -623,7 +623,14 @@
private FileInfo extractFileInfo(Uri uri, ContentResolver resolver) {
String fileName = null;
boolean hasThumbnail = false;
- Cursor cursor = resolver.query(uri, null, null, null, null);
+ Cursor cursor = null;
+
+ try {
+ cursor = resolver.query(uri, null, null, null, null);
+ } catch (SecurityException e) {
+ Log.w(TAG, "Error loading file preview", e);
+ }
+
if (cursor != null && cursor.getCount() > 0) {
int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
int flagsIndex = cursor.getColumnIndex(DocumentsContract.Document.COLUMN_FLAGS);
@@ -655,46 +662,50 @@
// due to permissions issues
findViewById(R.id.file_copy_button).setVisibility(View.GONE);
- try {
- ContentResolver resolver = getContentResolver();
- TextView fileNameView = findViewById(R.id.content_preview_filename);
- String action = targetIntent.getAction();
- if (Intent.ACTION_SEND.equals(action)) {
- Uri uri = targetIntent.getParcelableExtra(Intent.EXTRA_STREAM);
+ String action = targetIntent.getAction();
+ if (Intent.ACTION_SEND.equals(action)) {
+ Uri uri = targetIntent.getParcelableExtra(Intent.EXTRA_STREAM);
+ loadFileUriIntoView(uri);
+ } else {
+ List<Uri> uris = targetIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
+ int uriCount = uris.size();
- FileInfo fileInfo = extractFileInfo(uri, resolver);
- fileNameView.setText(fileInfo.name);
-
- if (fileInfo.hasThumbnail) {
- loadUriIntoView(R.id.content_preview_file_thumbnail, uri);
- } else {
- ImageView fileIconView = findViewById(R.id.content_preview_file_icon);
- fileIconView.setVisibility(View.VISIBLE);
- fileIconView.setImageResource(R.drawable.ic_doc_generic);
- }
+ if (uriCount == 0) {
+ contentPreviewLayout.setVisibility(View.GONE);
+ Log.i(TAG,
+ "Appears to be no uris available in EXTRA_STREAM, removing "
+ + "preview area");
+ return;
+ } else if (uriCount == 1) {
+ loadFileUriIntoView(uris.get(0));
} else {
- List<Uri> uris = targetIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
- if (uris.size() == 0) {
- contentPreviewLayout.setVisibility(View.GONE);
- Log.i(TAG,
- "Appears to be no uris available in EXTRA_STREAM, removing preview "
- + "area");
- return;
- }
-
- FileInfo fileInfo = extractFileInfo(uris.get(0), resolver);
- int remFileCount = uris.size() - 1;
+ FileInfo fileInfo = extractFileInfo(uris.get(0), getContentResolver());
+ int remUriCount = uriCount - 1;
String fileName = getResources().getQuantityString(R.plurals.file_count,
- remFileCount, fileInfo.name, remFileCount);
+ remUriCount, fileInfo.name, remUriCount);
+ TextView fileNameView = findViewById(R.id.content_preview_filename);
fileNameView.setText(fileName);
+
ImageView fileIconView = findViewById(R.id.content_preview_file_icon);
fileIconView.setVisibility(View.VISIBLE);
fileIconView.setImageResource(R.drawable.ic_file_copy);
}
- } catch (SecurityException e) {
- Log.w(TAG, "Error loading file preview", e);
- contentPreviewLayout.setVisibility(View.GONE);
+ }
+ }
+
+ private void loadFileUriIntoView(Uri uri) {
+ FileInfo fileInfo = extractFileInfo(uri, getContentResolver());
+
+ TextView fileNameView = findViewById(R.id.content_preview_filename);
+ fileNameView.setText(fileInfo.name);
+
+ if (fileInfo.hasThumbnail) {
+ loadUriIntoView(R.id.content_preview_file_thumbnail, uri);
+ } else {
+ ImageView fileIconView = findViewById(R.id.content_preview_file_icon);
+ fileIconView.setVisibility(View.VISIBLE);
+ fileIconView.setImageResource(R.drawable.ic_doc_generic);
}
}