|
@@ -34,7 +34,6 @@ import android.app.ProgressDialog;
|
|
|
import android.content.BroadcastReceiver;
|
|
|
import android.content.ComponentName;
|
|
|
import android.content.ContentResolver;
|
|
|
-import android.content.ContentUris;
|
|
|
import android.content.Context;
|
|
|
import android.content.DialogInterface;
|
|
|
import android.content.Intent;
|
|
@@ -47,11 +46,8 @@ import android.database.Cursor;
|
|
|
import android.net.Uri;
|
|
|
import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
-import android.os.Environment;
|
|
|
import android.os.IBinder;
|
|
|
import android.preference.PreferenceManager;
|
|
|
-import android.provider.DocumentsContract;
|
|
|
-import android.provider.MediaStore;
|
|
|
import android.provider.OpenableColumns;
|
|
|
import android.support.v4.app.Fragment;
|
|
|
import android.support.v4.app.FragmentManager;
|
|
@@ -137,7 +133,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
private static final String KEY_WAITING_TO_SEND = "WAITING_TO_SEND";
|
|
|
|
|
|
public static final int DIALOG_SHORT_WAIT = 0;
|
|
|
- private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 1;
|
|
|
private static final int DIALOG_CERT_NOT_SAVED = 2;
|
|
|
|
|
|
public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS";
|
|
@@ -155,7 +150,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
|
|
|
private boolean mSyncInProgress = false;
|
|
|
|
|
|
- private String DIALOG_UNTRUSTED_CERT;
|
|
|
+ private static String DIALOG_UNTRUSTED_CERT = "untrustedCertDialog";
|
|
|
|
|
|
private OCFile mWaitingToSend;
|
|
|
|
|
@@ -614,7 +609,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
|
|
|
@Override
|
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
- Log_OC.e(TAG, "ON ACTIVITIRESULT IN FILE_DISPLAY_ACTIVITY");
|
|
|
|
|
|
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
|
|
@@ -684,7 +678,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
|
|
|
|
|
|
private void requestSimpleUpload(Intent data, int resultCode) {
|
|
|
- String filepath = null;
|
|
|
+ String filePath = null;
|
|
|
String mimeType = null;
|
|
|
|
|
|
Uri selectedImageUri = data.getData();
|
|
@@ -692,67 +686,60 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
try {
|
|
|
mimeType = getContentResolver().getType(selectedImageUri);
|
|
|
|
|
|
- String filemanagerstring = selectedImageUri.getPath();
|
|
|
- String selectedImagePath = getPath(selectedImageUri);
|
|
|
+ String fileManagerString = selectedImageUri.getPath();
|
|
|
+ String selectedImagePath = UriUtils.getLocalPath(selectedImageUri, this);
|
|
|
|
|
|
if (selectedImagePath != null)
|
|
|
- filepath = selectedImagePath;
|
|
|
+ filePath = selectedImagePath;
|
|
|
else
|
|
|
- filepath = filemanagerstring;
|
|
|
+ filePath = fileManagerString;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
Log_OC.e(TAG, "Unexpected exception when trying to read the result of Intent.ACTION_GET_CONTENT", e);
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
} finally {
|
|
|
- if (filepath == null) {
|
|
|
+ if (filePath == null) {
|
|
|
Log_OC.e(TAG, "Couldn't resolve path to file");
|
|
|
- Toast t = Toast.makeText(this, getString(R.string.filedisplay_unexpected_bad_get_content), Toast.LENGTH_LONG);
|
|
|
+ Toast t = Toast.makeText(
|
|
|
+ this, getString(R.string.filedisplay_unexpected_bad_get_content), Toast.LENGTH_LONG
|
|
|
+ );
|
|
|
t.show();
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Intent i = new Intent(this, FileUploader.class);
|
|
|
- i.putExtra(FileUploader.KEY_ACCOUNT,
|
|
|
- getAccount());
|
|
|
- String remotepath = new String();
|
|
|
- for (int j = mDirectories.getCount() - 2; j >= 0; --j) {
|
|
|
- remotepath += OCFile.PATH_SEPARATOR + mDirectories.getItem(j);
|
|
|
- }
|
|
|
- if (!remotepath.endsWith(OCFile.PATH_SEPARATOR))
|
|
|
- remotepath += OCFile.PATH_SEPARATOR;
|
|
|
-
|
|
|
- if (filepath.startsWith(UriUtils.URI_CONTENT_SCHEME)) {
|
|
|
-
|
|
|
- Cursor cursor = MainApp.getAppContext().getContentResolver()
|
|
|
- .query(Uri.parse(filepath), null, null, null, null, null);
|
|
|
+ i.putExtra(FileUploader.KEY_ACCOUNT, getAccount());
|
|
|
+ OCFile currentDir = getCurrentDir();
|
|
|
+ String remotePath = (currentDir != null) ? currentDir.getRemotePath() : OCFile.ROOT_PATH;
|
|
|
|
|
|
+ if (filePath.startsWith(UriUtils.URI_CONTENT_SCHEME)) {
|
|
|
+ Cursor cursor = getContentResolver().query(Uri.parse(filePath), null, null, null, null);
|
|
|
try {
|
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
|
- String displayName = cursor.getString(
|
|
|
- cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
|
|
|
- Log_OC.i(TAG, "Display Name: " + displayName + "; mimeType: " + mimeType);
|
|
|
+ String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
|
|
|
+ Log_OC.v(TAG, "Display Name: " + displayName );
|
|
|
|
|
|
displayName.replace(File.separatorChar, '_');
|
|
|
displayName.replace(File.pathSeparatorChar, '_');
|
|
|
- remotepath += displayName + DisplayUtils.getComposedFileExtension(filepath);
|
|
|
+ remotePath += displayName + DisplayUtils.getComposedFileExtension(filePath);
|
|
|
|
|
|
}
|
|
|
+ // and what happens in case of error?; wrong target name for the upload
|
|
|
} finally {
|
|
|
cursor.close();
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- remotepath += new File(filepath).getName();
|
|
|
+ remotePath += new File(filePath).getName();
|
|
|
}
|
|
|
|
|
|
- i.putExtra(FileUploader.KEY_LOCAL_FILE, filepath);
|
|
|
- i.putExtra(FileUploader.KEY_REMOTE_FILE, remotepath);
|
|
|
+ i.putExtra(FileUploader.KEY_LOCAL_FILE, filePath);
|
|
|
+ i.putExtra(FileUploader.KEY_REMOTE_FILE, remotePath);
|
|
|
i.putExtra(FileUploader.KEY_MIME_TYPE, mimeType);
|
|
|
i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
|
|
|
if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)
|
|
|
- i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
|
|
|
+ i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
|
|
|
startService(i);
|
|
|
}
|
|
|
|
|
@@ -1872,80 +1859,4 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
getListOfFilesFragment().sortByName(ascending);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * Translates a content URI of a content to a physical path on the disk
|
|
|
- *
|
|
|
- * @param uri The URI to resolve
|
|
|
- * @return The path to the content or null if it could not be found
|
|
|
- */
|
|
|
- @TargetApi(Build.VERSION_CODES.KITKAT)
|
|
|
- public String getPath(Uri uri) {
|
|
|
- final boolean isKitKatOrLater = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
|
|
|
-
|
|
|
- // DocumentProvider
|
|
|
- if (isKitKatOrLater && DocumentsContract.isDocumentUri(this, uri)) {
|
|
|
- // ExternalStorageProvider
|
|
|
- if (UriUtils.isExternalStorageDocument(uri)) {
|
|
|
- final String docId = DocumentsContract.getDocumentId(uri);
|
|
|
- final String[] split = docId.split(":");
|
|
|
- final String type = split[0];
|
|
|
-
|
|
|
- if ("primary".equalsIgnoreCase(type)) {
|
|
|
- return Environment.getExternalStorageDirectory() + "/" + split[1];
|
|
|
- }
|
|
|
- }
|
|
|
- // DownloadsProvider
|
|
|
- else if (UriUtils.isDownloadsDocument(uri)) {
|
|
|
-
|
|
|
- final String id = DocumentsContract.getDocumentId(uri);
|
|
|
- final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
|
|
|
- Long.valueOf(id));
|
|
|
-
|
|
|
- return UriUtils.getDataColumn(this, contentUri, null, null);
|
|
|
- }
|
|
|
- // MediaProvider
|
|
|
- else if (UriUtils.isMediaDocument(uri)) {
|
|
|
- final String docId = DocumentsContract.getDocumentId(uri);
|
|
|
- final String[] split = docId.split(":");
|
|
|
- final String type = split[0];
|
|
|
-
|
|
|
- Uri contentUri = null;
|
|
|
- if ("image".equals(type)) {
|
|
|
- contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
|
|
|
- } else if ("video".equals(type)) {
|
|
|
- contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
|
|
|
- } else if ("audio".equals(type)) {
|
|
|
- contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
|
|
|
- }
|
|
|
-
|
|
|
- final String selection = "_id=?";
|
|
|
- final String[] selectionArgs = new String[] { split[1] };
|
|
|
-
|
|
|
- return UriUtils.getDataColumn(this, contentUri, selection, selectionArgs);
|
|
|
- }
|
|
|
- // Documents providers returned as content://...
|
|
|
- else if (UriUtils.isContentDocument(uri)) {
|
|
|
- return uri.toString();
|
|
|
- }
|
|
|
- }
|
|
|
- // MediaStore (and general)
|
|
|
- else if ("content".equalsIgnoreCase(uri.getScheme())) {
|
|
|
-
|
|
|
- // Return the remote address
|
|
|
- if (UriUtils.isGooglePhotosUri(uri))
|
|
|
- return uri.getLastPathSegment();
|
|
|
-
|
|
|
- return UriUtils.getDataColumn(this, uri, null, null);
|
|
|
- }
|
|
|
- // File
|
|
|
- else if ("file".equalsIgnoreCase(uri.getScheme())) {
|
|
|
- return uri.getPath();
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
}
|