diff --git a/app/src/main/java/com/seafile/seadroid2/ui/activity/ShareToSeafileActivity.java b/app/src/main/java/com/seafile/seadroid2/ui/activity/ShareToSeafileActivity.java index 0252c66cb..d91b540ac 100644 --- a/app/src/main/java/com/seafile/seadroid2/ui/activity/ShareToSeafileActivity.java +++ b/app/src/main/java/com/seafile/seadroid2/ui/activity/ShareToSeafileActivity.java @@ -30,8 +30,10 @@ import org.apache.commons.io.IOUtils; +import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -56,10 +58,36 @@ protected void onCreate(Bundle savedInstanceState) { Bundle extras = intent.getExtras(); if (extras != null) { Object extraStream = extras.get(Intent.EXTRA_STREAM); - if(localPathList == null) localPathList = Lists.newArrayList(); - loadSharedFiles(extraStream); + if (extraStream == null) { + localPathList = Lists.newArrayList(); + loadSharedFiles(saveClipData(extras)); + } else { + if(localPathList == null) localPathList = Lists.newArrayList(); + loadSharedFiles(extraStream); + } + } + } + + private Uri saveClipData(Bundle message) { + + try { + File tempDir = DataManager.createTempDir(); + File tempFile = new File(tempDir, "ClipData"); + + if (!tempFile.createNewFile()) { + throw new RuntimeException("could not create temporary file"); + } + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + writer.append(message.getString("android.intent.extra.TEXT")); + writer.flush(); + writer.close(); + + return Uri.fromFile(tempFile); + + } catch (IOException | RuntimeException e) { + Log.e(DEBUG_TAG, "Could not open requested document", e); } - + return null; } private void loadSharedFiles(Object extraStream) {