@@ -44,6 +44,7 @@ import android.view.inputmethod.InputMethodManager
4444import androidx.activity.OnBackPressedCallback
4545import androidx.annotation.VisibleForTesting
4646import androidx.appcompat.widget.SearchView
47+ import androidx.core.content.FileProvider
4748import androidx.core.view.MenuItemCompat
4849import androidx.core.view.isVisible
4950import androidx.fragment.app.Fragment
@@ -155,10 +156,12 @@ import com.owncloud.android.utils.PermissionUtil.requestNotificationPermission
155156import com.owncloud.android.utils.PermissionUtil.requestStoragePermissionIfNeeded
156157import com.owncloud.android.utils.PushUtils
157158import com.owncloud.android.utils.StringUtils
159+ import com.owncloud.android.utils.UriUtils
158160import com.owncloud.android.utils.theme.CapabilityUtils
159161import kotlinx.coroutines.Dispatchers
160162import kotlinx.coroutines.launch
161163import kotlinx.coroutines.withContext
164+ import org.apache.commons.io.FilenameUtils
162165import org.greenrobot.eventbus.EventBus
163166import org.greenrobot.eventbus.Subscribe
164167import org.greenrobot.eventbus.ThreadMode
@@ -970,10 +973,13 @@ class FileDisplayActivity :
970973 */
971974 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
972975 if (data != null &&
973- requestCode == REQUEST_CODE__SELECT_CONTENT_FROM_APPS &&
976+ (
977+ requestCode == REQUEST_CODE__SELECT_CONTENT_FROM_APPS ||
978+ requestCode == REQUEST_CODE__SELECT_CONTENT_FROM_APPS_AUTO_RENAME
979+ ) &&
974980 (resultCode == RESULT_OK || resultCode == UploadFilesActivity .RESULT_OK_AND_MOVE )
975981 ) {
976- requestUploadOfContentFromApps(data , resultCode)
982+ requestUploadOfContentFromApps(requestCode , resultCode, data )
977983 } else if (data != null &&
978984 requestCode == REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM &&
979985 (
@@ -1107,7 +1113,7 @@ class FileDisplayActivity :
11071113 }
11081114 }
11091115
1110- private fun requestUploadOfContentFromApps (contentIntent : Intent , resultCode : Int ) {
1116+ private fun requestUploadOfContentFromApps (requestCode : Int , resultCode : Int , contentIntent : Intent ) {
11111117 val streamsToUpload = ArrayList <Parcelable ?>()
11121118
11131119 if (contentIntent.clipData != null && (contentIntent.clipData?.itemCount ? : 0 ) > 0 ) {
@@ -1129,6 +1135,17 @@ class FileDisplayActivity :
11291135
11301136 val currentDir = getCurrentDir()
11311137 val remotePath = if (currentDir != null ) currentDir.remotePath else OCFile .ROOT_PATH
1138+ var fileDisplayNameTransformer: androidx.core.util.Function <Uri , String ?>? = null
1139+ if (requestCode == REQUEST_CODE__SELECT_CONTENT_FROM_APPS_AUTO_RENAME ) {
1140+ fileDisplayNameTransformer = { uri: Uri ->
1141+ val displayName = UriUtils .getDisplayNameForUri(uri, applicationContext)
1142+ if (displayName != null && displayName.isNotEmpty()) {
1143+ FileOperationsHelper .getTimestampedFileName(" ." + FilenameUtils .getExtension(displayName))
1144+ } else {
1145+ null
1146+ }
1147+ }
1148+ }
11321149
11331150 val uploader = UriUploader (
11341151 this ,
@@ -1139,7 +1156,8 @@ class FileDisplayActivity :
11391156 ),
11401157 behaviour,
11411158 false , // Not show waiting dialog while file is being copied from private storage
1142- null // Not needed copy temp task listener
1159+ null , // Not needed copy temp task listener
1160+ fileDisplayNameTransformer
11431161 )
11441162
11451163 uploader.uploadUris()
@@ -3139,6 +3157,9 @@ class FileDisplayActivity :
31393157 @JvmField
31403158 val REQUEST_CODE__UPLOAD_FROM_VIDEO_CAMERA : Int = REQUEST_CODE__LAST_SHARED + 6
31413159
3160+ @JvmField
3161+ val REQUEST_CODE__SELECT_CONTENT_FROM_APPS_AUTO_RENAME : Int = REQUEST_CODE__LAST_SHARED + 7
3162+
31423163 protected val DELAY_TO_REQUEST_REFRESH_OPERATION_LATER : Long = DELAY_TO_REQUEST_OPERATIONS_LATER + 350
31433164
31443165 private val TAG : String = FileDisplayActivity ::class .java.getSimpleName()
0 commit comments