package com.owncloud.android.files;
+import java.io.File;
+import java.io.IOException;
import org.apache.http.protocol.HTTP;
import android.accounts.AccountManager;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.accounts.OwnCloudAccount;
-import com.owncloud.android.lib.network.webdav.WebdavUtils;
+
+import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
+import com.owncloud.android.lib.common.network.WebdavUtils;
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.ui.activity.FileActivity;
-import com.owncloud.android.ui.dialog.ActivityChooserDialog;
+import com.owncloud.android.ui.dialog.ShareLinkToDialog;
+import com.owncloud.android.utils.FileStorageUtils;
import com.owncloud.android.utils.Log_OC;
/**
private static final String TAG = FileOperationsHelper.class.getName();
- private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
+ private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
+
+ public final static int REQUEST_CODE_FILE_OPEN_HELPER = 100;
public void openFile(OCFile file, FileActivity callerActivity) {
String link = "https://fake.url";
Intent intent = createShareWithLinkIntent(link);
String[] packagesToExclude = new String[] { callerActivity.getPackageName() };
- DialogFragment chooserDialog = ActivityChooserDialog.newInstance(intent, packagesToExclude, file);
+ DialogFragment chooserDialog = ShareLinkToDialog.newInstance(intent, packagesToExclude, file);
chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
} else {
public boolean isSharedSupported(FileActivity callerActivity) {
if (callerActivity.getAccount() != null) {
AccountManager accountManager = AccountManager.get(callerActivity);
- return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API));
+
+ String version = accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_OC_VERSION);
+ String versionString = accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_OC_VERSION_STRING);
+ return (new OwnCloudVersion(version, versionString)).isSharedSupported();
+ //return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API));
}
return false;
}
}
}
- public void sendFile(OCFile file, FileActivity callerActivity) {
- // Obtain the file
- if (!file.isDown()) { // Download the file
- Log_OC.d(TAG, file.getRemotePath() + " : File must be downloaded");
+ public void sendDownloadedFile(OCFile file, FileActivity callerActivity) {
+ if (file != null) {
+ Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
+ // set MimeType
+ sendIntent.setType(file.getMimetype());
+ sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getStoragePath()));
+ sendIntent.putExtra(Intent.ACTION_SEND, true); // Send Action
+
+ // Show dialog, without the own app
+ String[] packagesToExclude = new String[] { callerActivity.getPackageName() };
+ DialogFragment chooserDialog = ShareLinkToDialog.newInstance(sendIntent, packagesToExclude, file);
+ chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
+
} else {
- sendDownloadedFile(file, callerActivity);
+ Log_OC.wtf(TAG, "Trying to send a NULL OCFile");
}
-
-
}
- public void sendDownloadedFile(OCFile file, FileActivity callerActivity) {
- Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
- // set MimeType
- sharingIntent.setType(file.getMimetype());
- sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getStoragePath()));
- callerActivity.startActivity(Intent.createChooser(sharingIntent, callerActivity.getString(R.string.send_file_title_intent)));
- }
+ public void sendFileToApp(Intent sendIntent, FileActivity callerActivity) {
+ Uri filePath = sendIntent.getParcelableExtra(Intent.EXTRA_STREAM);
+ File file = new File(filePath.getPath());
+ Log_OC.d(TAG, "FILE " + filePath.getPath());
+ if (file.exists()) {
+ File folder = new File(FileStorageUtils.getTemporalPath(callerActivity.getAccount().name) + "/send");
+ boolean success = true;
+ if (!folder.exists()) {
+ success = folder.mkdir();
+ }
+ if (success) {
+ File tmpFile = new File(folder.getAbsolutePath()+ "/" + file.getName());
+ try {
+ tmpFile.createNewFile();
+ FileStorageUtils.copyFile(file, tmpFile);
+ } catch (IOException e) {
+ Log_OC.e(TAG, "An error occurred while it was trying to copy in a temporal folder " + e.getMessage());
+ }
+ // Update Uri
+ Uri uri = Uri.fromFile(tmpFile);
+ sendIntent.removeExtra(Intent.EXTRA_STREAM);
+ sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
+ callerActivity.startActivityForResult(sendIntent, REQUEST_CODE_FILE_OPEN_HELPER);
+ }
+ } else {
+ // Show a Message
+ Toast t = Toast.makeText(callerActivity, callerActivity.getString(R.string.send_file_missing_file), Toast.LENGTH_LONG);
+ t.show();
+ Log_OC.d(TAG, "Missing file");
+ }
+ }
+
+
+
}