OC-2968: Filter out ownCloud from the list of apps able to receive the file

This commit is contained in:
masensio 2014-02-17 13:54:02 +01:00
parent 9b1a549226
commit 6cf78042b0
5 changed files with 58 additions and 35 deletions

View file

@ -253,5 +253,5 @@
<string name="unshare_link_file_no_exist">Unable to unshare this file or folder. It does not exist.</string>
<string name="unshare_link_file_error">An error occurred while trying to unshare this file or folder</string>
<string name="send_file_title_intent">Send</string>
<string name="activity_chooser_send_file_title">Send</string>
</resources>

View file

@ -161,24 +161,22 @@ public class FileOperationsHelper {
}
}
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");
} else {
sendDownloadedFile(file, callerActivity);
}
}
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)));
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 = ActivityChooserDialog.newInstance(sendIntent, packagesToExclude, file);
chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
} else {
Log_OC.wtf(TAG, "Trying to send a NULL OCFile");
}
}
}

View file

@ -1633,6 +1633,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
}
private void sendDownloadedFile(){
dismissLoadingDialog();
getFileOperationsHelper().sendDownloadedFile(mWaitingToSend, this);
mWaitingToSend = null;
}

View file

@ -98,23 +98,46 @@ public class ActivityChooserDialog extends SherlockDialogFragment {
Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm));
mAdapter = new ActivityAdapter(getSherlockActivity(), pm, activities);
return new AlertDialog.Builder(getSherlockActivity())
.setTitle(R.string.activity_chooser_title)
.setAdapter(mAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Add the information of the chosen activity to the intent to send
ResolveInfo chosen = mAdapter.getItem(which);
ActivityInfo actInfo = chosen.activityInfo;
ComponentName name=new ComponentName(actInfo.applicationInfo.packageName, actInfo.name);
mIntent.setComponent(name);
// Create a new share resource
FileOperationsHelper foh = new FileOperationsHelper();
foh.shareFileWithLinkToApp(mFile, mIntent, (FileActivity)getSherlockActivity());
}
})
.create();
boolean sendAction = mIntent.getBooleanExtra(Intent.ACTION_SEND, false);
if (sendAction) {
return new AlertDialog.Builder(getSherlockActivity())
.setTitle(R.string.activity_chooser_title)
.setAdapter(mAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Add the information of the chosen activity to the intent to send
ResolveInfo chosen = mAdapter.getItem(which);
ActivityInfo actInfo = chosen.activityInfo;
ComponentName name=new ComponentName(actInfo.applicationInfo.packageName, actInfo.name);
mIntent.setComponent(name);
// Send the file
((FileActivity)getSherlockActivity()).startActivity(mIntent);
}
})
.create();
} else {
return new AlertDialog.Builder(getSherlockActivity())
.setTitle(R.string.activity_chooser_send_file_title)
.setAdapter(mAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Add the information of the chosen activity to the intent to send
ResolveInfo chosen = mAdapter.getItem(which);
ActivityInfo actInfo = chosen.activityInfo;
ComponentName name=new ComponentName(actInfo.applicationInfo.packageName, actInfo.name);
mIntent.setComponent(name);
// Create a new share resource
FileOperationsHelper foh = new FileOperationsHelper();
foh.shareFileWithLinkToApp(mFile, mIntent, (FileActivity)getSherlockActivity());
}
})
.create();
}
}

View file

@ -362,6 +362,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
case R.id.action_send_file: {
// Obtain the file
if (!mTargetFile.isDown()) { // Download the file
((FileDisplayActivity) getSherlockActivity()).showLoadingDialog();
Log_OC.d(TAG, mTargetFile.getRemotePath() + " : File must be downloaded");
mContainerActivity.startDownloadForSending(mTargetFile);