瀏覽代碼

Minor changes

David A. Velasco 9 年之前
父節點
當前提交
e34d76a126

+ 24 - 33
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -121,7 +121,7 @@ public class FileDisplayActivity extends HookActivity
     public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS";
 
     public static final int REQUEST_CODE__SELECT_CONTENT_FROM_APPS = REQUEST_CODE__LAST_SHARED + 1;
-    public static final int REQUEST_CODE__SELECT_MULTIPLE_FILES = REQUEST_CODE__LAST_SHARED + 2;
+    public static final int REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM = REQUEST_CODE__LAST_SHARED + 2;
     public static final int REQUEST_CODE__MOVE_FILES = REQUEST_CODE__LAST_SHARED + 3;
     public static final int REQUEST_CODE__COPY_FILES = REQUEST_CODE__LAST_SHARED + 4;
 
@@ -189,16 +189,6 @@ public class FileDisplayActivity extends HookActivity
         //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         getSupportActionBar().setHomeButtonEnabled(true);
 
-        // Init Fragment without UI to retain AsyncTask across configuration changes
-        FragmentManager fm = getSupportFragmentManager();
-        TaskRetainerFragment taskRetainerFragment =
-                (TaskRetainerFragment) fm.findFragmentByTag(TaskRetainerFragment.FTAG_TASK_RETAINER_FRAGMENT);
-        if (taskRetainerFragment == null) {
-            taskRetainerFragment = new TaskRetainerFragment();
-            fm.beginTransaction()
-                    .add(taskRetainerFragment, TaskRetainerFragment.FTAG_TASK_RETAINER_FRAGMENT).commit();
-        }   // else, Fragment already created and retained across configuration change
-
         Log_OC.v(TAG, "onCreate() end");
     }
 
@@ -650,29 +640,15 @@ public class FileDisplayActivity extends HookActivity
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 
-        if (requestCode == REQUEST_CODE__SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK ||
-                resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
-
-            ArrayList<Parcelable> streamsToUpload = new ArrayList<Parcelable>();
+        if (requestCode == REQUEST_CODE__SELECT_CONTENT_FROM_APPS &&
+            (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
 
-            //getClipData is only supported on api level 16+, Jelly Bean
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN &&
-                    data.getClipData() != null &&
-                    data.getClipData().getItemCount() > 0) {
+            requestUploadOfContentFromApps(data, resultCode);
 
-                for (int i = 0; i < data.getClipData().getItemCount(); i++) {
-                    Intent intent = new Intent();
-                    intent.setData(data.getClipData().getItemAt(i).getUri());
-                    streamsToUpload.add(intent.getData());
-                }
+        } else if (requestCode == REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM &&
+            (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
 
-            } else {
-                streamsToUpload.add(data.getData());
-            }
-            requestSimpleUpload(streamsToUpload, resultCode);
-        } else if (requestCode == REQUEST_CODE__SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK ||
-                resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
-            requestMultipleUpload(data, resultCode);
+            requestUploadOfFilesFromFileSystem(data, resultCode);
 
         } else if (requestCode == REQUEST_CODE__MOVE_FILES && resultCode == RESULT_OK) {
             final Intent fData = data;
@@ -707,7 +683,7 @@ public class FileDisplayActivity extends HookActivity
 
     }
 
-    private void requestMultipleUpload(Intent data, int resultCode) {
+    private void requestUploadOfFilesFromFileSystem(Intent data, int resultCode) {
         String[] filePaths = data.getStringArrayExtra(UploadFilesActivity.EXTRA_CHOSEN_FILES);
         if (filePaths != null) {
             String[] remotePaths = new String[filePaths.length];
@@ -740,7 +716,22 @@ public class FileDisplayActivity extends HookActivity
     }
 
 
-    private void requestSimpleUpload(ArrayList<Parcelable> streamsToUpload, int resultCode) {
+    private void requestUploadOfContentFromApps(Intent contentIntent, int resultCode) {
+
+        ArrayList<Parcelable> streamsToUpload = new ArrayList<>();
+
+        //getClipData is only supported on api level 16+, Jelly Bean
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN &&
+            contentIntent.getClipData() != null &&
+            contentIntent.getClipData().getItemCount() > 0) {
+
+            for (int i = 0; i < contentIntent.getClipData().getItemCount(); i++) {
+                streamsToUpload.add(contentIntent.getClipData().getItemAt(i).getUri());
+            }
+
+        } else {
+            streamsToUpload.add(contentIntent.getData());
+        }
 
         int behaviour = (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE) ? FileUploader.LOCAL_BEHAVIOUR_MOVE :
                 FileUploader.LOCAL_BEHAVIOUR_COPY;

+ 0 - 9
src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -145,15 +145,6 @@ public class ReceiveExternalFilesActivity extends FileActivity
         mSyncBroadcastReceiver = new SyncBroadcastReceiver();
         registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
 
-        // Init Fragment without UI to retain AsyncTask across configuration changes
-        FragmentManager fm = getSupportFragmentManager();
-        TaskRetainerFragment taskRetainerFragment =
-            (TaskRetainerFragment) fm.findFragmentByTag(TaskRetainerFragment.FTAG_TASK_RETAINER_FRAGMENT);
-        if (taskRetainerFragment == null) {
-            taskRetainerFragment = new TaskRetainerFragment();
-            fm.beginTransaction()
-                    .add(taskRetainerFragment, TaskRetainerFragment.FTAG_TASK_RETAINER_FRAGMENT).commit();
-        }   // else, Fragment already created and retained across configuration change
     }
 
     @Override

+ 2 - 2
src/com/owncloud/android/ui/dialog/UploadSourceDialogFragment.java

@@ -77,12 +77,12 @@ public class UploadSourceDialogFragment extends DialogFragment {
                             UploadFilesActivity.EXTRA_ACCOUNT,
                             ((FileActivity)getActivity()).getAccount()
                     );
-                    //startActivityForResult(action, REQUEST_CODE__SELECT_MULTIPLE_FILES);
+                    //startActivityForResult(action, REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM);
                     // this flow seems broken;
                     // Actionbarsherlock, maybe?
                     getActivity().startActivityForResult(
                             action,
-                            FileDisplayActivity.REQUEST_CODE__SELECT_MULTIPLE_FILES
+                            FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM
                     );
 
                 } else if (item == 1) {

+ 1 - 1
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -229,7 +229,7 @@ public class OCFileListFragment extends ExtendedListFragment
             @Override
             public void onClick(View v) {
                 UploadFilesActivity.startUploadActivityForResult(getActivity(), ((FileActivity)getActivity())
-                        .getAccount(), FileDisplayActivity.REQUEST_CODE__SELECT_MULTIPLE_FILES);
+                        .getAccount(), FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM);
                 getFabMain().collapse();
                 recordMiniFabClick();
             }

+ 15 - 1
src/com/owncloud/android/ui/helpers/UriUploader.java

@@ -38,7 +38,14 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * This class handle both file:// and content:// URIs pointing to files to upload.
+ * This class examines URIs pointing to files to upload and then requests {@link FileUploader} to upload them.
+ *
+ * URIs with scheme file:// do not require any previous processing, their path is sent to {@link FileUploader}
+ * to find the source file.
+ *
+ * URIs with scheme content:// are handling assuming that file is in private storage owned by a different app,
+ * and that persistency permission is not granted. Due to this, contents of the file are temporary copied by
+ * the OC app, and then passed {@link FileUploader}.
  */
 public class UriUploader {
 
@@ -178,8 +185,15 @@ public class UriUploader {
                 (mCopyTmpTaskListener, mActivity);
 
         FragmentManager fm = mActivity.getSupportFragmentManager();
+
+        // Init Fragment without UI to retain AsyncTask across configuration changes
         TaskRetainerFragment taskRetainerFragment =
                 (TaskRetainerFragment) fm.findFragmentByTag(TaskRetainerFragment.FTAG_TASK_RETAINER_FRAGMENT);
+        if (taskRetainerFragment == null) {
+            taskRetainerFragment = new TaskRetainerFragment();
+            fm.beginTransaction()
+                .add(taskRetainerFragment, TaskRetainerFragment.FTAG_TASK_RETAINER_FRAGMENT).commit();
+        }   // else, Fragment was created before
         taskRetainerFragment.setTask(copyTask);
 
         copyTask.execute(