Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2020-02-01 20:28:55 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-02-01 20:28:55 +0300
commitc24a7dbe868b0af544a77eae941304066a9e8b2b (patch)
treed9361d2fffba489ea1d0ba15a63b952ef6b414d3
parent857a948b697a030922643385b13b6e47a7866bed (diff)
attachments upload WIP
-rw-r--r--app/src/main/AndroidManifest.xml2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/util/RealPathUtils.java94
3 files changed, 99 insertions, 1 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 16b7d5b4a..18b546abf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,8 @@
<uses-permission android:name="com.nextcloud.android.sso" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name="it.niedermann.nextcloud.deck.Application"
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java
index 8866892db..7ddf8fa9a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java
@@ -46,6 +46,7 @@ import it.niedermann.nextcloud.deck.model.full.FullStack;
import it.niedermann.nextcloud.deck.model.ocs.Capabilities;
import it.niedermann.nextcloud.deck.model.propagation.CardUpdate;
import it.niedermann.nextcloud.deck.model.propagation.Reorder;
+import it.niedermann.nextcloud.deck.persistence.util.RealPathUtils;
import it.niedermann.nextcloud.deck.util.DateUtil;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
@@ -280,7 +281,8 @@ public class ServerAdapter {
// ## ATTACHMENTS
public void uploadAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, String contentType, Uri attachmentUri, IResponseCallback<Attachment> responseCallback) {
ensureInternetConnection();
- File attachment = new File(getUriRealPath( applicationContext, attachmentUri));
+// File attachment = new File(getUriRealPath( applicationContext, attachmentUri));
+ File attachment = RealPathUtils.getRealPath(applicationContext, attachmentUri);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", attachment.getName(), RequestBody.create(MediaType.parse(contentType), attachment));
MultipartBody.Part typePart = MultipartBody.Part.createFormData("type", attachment.getName(), RequestBody.create(MediaType.parse("text/plain"), "deck_file"));
RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().uploadAttachment(remoteBoardId, remoteStackId, remoteCardId, typePart, filePart), responseCallback);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/util/RealPathUtils.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/util/RealPathUtils.java
new file mode 100644
index 000000000..f45226ebd
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/util/RealPathUtils.java
@@ -0,0 +1,94 @@
+package it.niedermann.nextcloud.deck.persistence.util;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.DocumentsContract;
+import android.provider.MediaStore;
+
+import androidx.loader.content.CursorLoader;
+
+import java.io.File;
+
+import it.niedermann.nextcloud.deck.DeckLog;
+
+public class RealPathUtils {
+
+ public static File getRealPath(Context context, Uri uri){
+ String path = null;
+ if (Build.VERSION.SDK_INT < 11)
+ path = RealPathUtils.getRealPathFromURI_BelowAPI11(context, uri);
+
+ // SDK >= 11 && SDK < 19
+ else if (Build.VERSION.SDK_INT < 19)
+ path = RealPathUtils.getRealPathFromURI_API11to18(context, uri);
+
+ // SDK > 19 (Android 4.4)
+ else
+ path = RealPathUtils.getRealPathFromURI_API19(context, uri);
+ DeckLog.log("File Path: " + path);
+ // Get the file instance
+ return new File(path);
+ }
+
+@SuppressLint("NewApi")
+public static String getRealPathFromURI_API19(Context context, Uri uri){
+ String filePath = "";
+ String wholeID = DocumentsContract.getDocumentId(uri);
+
+ // Split at colon, use second item in the array
+ String id;
+ if (wholeID.contains(":")){
+ id = wholeID.split(":")[1];
+ } else {
+ id = wholeID;
+ }
+
+ String[] column = { MediaStore.Images.Media.DATA };
+
+ // where id is equal to
+ String sel = MediaStore.Images.Media._ID + "=?";
+
+ Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+ column, sel, new String[]{ id }, null);
+
+ int columnIndex = cursor.getColumnIndex(column[0]);
+
+ if (cursor.moveToFirst()) {
+ filePath = cursor.getString(columnIndex);
+ }
+ cursor.close();
+ return filePath;
+}
+
+
+@SuppressLint("NewApi")
+public static String getRealPathFromURI_API11to18(Context context, Uri contentUri) {
+ String[] proj = { MediaStore.Images.Media.DATA };
+ String result = null;
+
+ CursorLoader cursorLoader = new CursorLoader(
+ context,
+ contentUri, proj, null, null, null);
+ Cursor cursor = cursorLoader.loadInBackground();
+
+ if(cursor != null){
+ int column_index =
+ cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
+ cursor.moveToFirst();
+ result = cursor.getString(column_index);
+ }
+ return result;
+}
+
+public static String getRealPathFromURI_BelowAPI11(Context context, Uri contentUri){
+ String[] proj = { MediaStore.Images.Media.DATA };
+ Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
+ int column_index
+ = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
+ cursor.moveToFirst();
+ return cursor.getString(column_index);
+}
+} \ No newline at end of file