ソースを参照

Fixed multiple upload from external apps for Android 4.3+

David A. Velasco 9 年 前
コミット
99c89e52ae

+ 7 - 9
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -23,7 +23,6 @@
 package com.owncloud.android.ui.activity;
 
 import android.accounts.Account;
-import android.accounts.AccountManager;
 import android.accounts.AuthenticatorException;
 import android.annotation.TargetApi;
 import android.content.BroadcastReceiver;
@@ -56,7 +55,6 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.ProgressBar;
 import android.widget.RelativeLayout;
-import android.widget.TextView;
 import android.widget.Toast;
 
 import com.owncloud.android.MainApp;
@@ -67,11 +65,6 @@ import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
-import com.owncloud.android.lib.common.OwnCloudAccount;
-import com.owncloud.android.lib.common.OwnCloudClient;
-import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
-import com.owncloud.android.lib.common.OwnCloudCredentials;
-import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;
 import com.owncloud.android.lib.common.network.CertificateCombinedException;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -625,14 +618,19 @@ public class FileDisplayActivity extends HookActivity
 
         if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK ||
                 resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
+
             //getClipData is only supported on api level 16+, Jelly Bean
-            if (data.getData() == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN &&
+                    data.getClipData() != null &&
+                    data.getClipData().getItemCount() > 0) {
+
                 for( int i = 0; i < data.getClipData().getItemCount(); i++){
                     Intent intent = new Intent();
                     intent.setData(data.getClipData().getItemAt(i).getUri());
                     requestSimpleUpload(intent, resultCode);
                 }
-            }else {
+
+            } else {
                 requestSimpleUpload(data, resultCode);
             }
         } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK ||

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

@@ -31,6 +31,7 @@ import android.support.v4.app.DialogFragment;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FileActivity;
+import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.UploadFilesActivity;
 
 
@@ -45,9 +46,6 @@ public class UploadSourceDialogFragment extends DialogFragment {
     private final static String ARG_ACCOUNT =  UploadSourceDialogFragment.class.getSimpleName() +
             ".ARG_ACCOUNT";
 
-    public static final int ACTION_SELECT_CONTENT_FROM_APPS = 1;
-    public static final int ACTION_SELECT_MULTIPLE_FILES = 2;
-
     public static UploadSourceDialogFragment newInstance(Account account) {
         UploadSourceDialogFragment f = new UploadSourceDialogFragment();
         Bundle args = new Bundle();
@@ -82,7 +80,10 @@ public class UploadSourceDialogFragment extends DialogFragment {
                     //startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES);
                     // this flow seems broken;
                     // Actionbarsherlock, maybe?
-                    getActivity().startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES);
+                    getActivity().startActivityForResult(
+                            action,
+                            FileDisplayActivity.ACTION_SELECT_MULTIPLE_FILES
+                    );
 
                 } else if (item == 1) {
                     Intent action = new Intent(Intent.ACTION_GET_CONTENT);
@@ -91,11 +92,9 @@ public class UploadSourceDialogFragment extends DialogFragment {
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
                         action.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                     }
-                    //startActivityForResult(   // this flow seems broken;
-                                                // Actionbarsherlock, maybe?
                     getActivity().startActivityForResult(
                             Intent.createChooser(action, getString(R.string.upload_chooser_title)),
-                            ACTION_SELECT_CONTENT_FROM_APPS
+                            FileDisplayActivity.ACTION_SELECT_CONTENT_FROM_APPS
                     );
                 }
             }