X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/5f41bb14d370e0c9c0a8003e4ed122f466b0ce71..8b451ab992db65a2a897f37e2a77b89aa767a66d:/src/com/owncloud/android/files/FileOperationsHelper.java?ds=inline diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index 848f8cf4..010d1ff7 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -22,7 +22,11 @@ package com.owncloud.android.files; import android.accounts.Account; +import android.content.ActivityNotFoundException; +import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.net.Uri; import android.support.v4.app.DialogFragment; import android.webkit.MimeTypeMap; @@ -43,6 +47,9 @@ import com.owncloud.android.ui.dialog.ShareLinkToDialog; import org.apache.http.protocol.HTTP; +import java.io.File; +import java.util.List; + /** * */ @@ -86,21 +93,46 @@ public class FileOperationsHelper { ); } } - - Intent chooserIntent; + + Intent openFileWithIntent; if (intentForGuessedMimeType != null) { - chooserIntent = Intent.createChooser(intentForGuessedMimeType, mFileActivity.getString(R.string.actionbar_open_with)); + openFileWithIntent = intentForGuessedMimeType; } else { - chooserIntent = Intent.createChooser(intentForSavedMimeType, mFileActivity.getString(R.string.actionbar_open_with)); + openFileWithIntent = intentForSavedMimeType; } - mFileActivity.startActivity(chooserIntent); + List launchables = mFileActivity.getPackageManager(). + queryIntentActivities(openFileWithIntent, PackageManager.GET_INTENT_FILTERS); + + if(launchables != null && launchables.size() > 0) { + try { + mFileActivity.startActivity( + Intent.createChooser( + openFileWithIntent, mFileActivity.getString(R.string.actionbar_open_with) + ) + ); + } catch (ActivityNotFoundException anfe) { + showNoAppForFileTypeToast(mFileActivity.getApplicationContext()); + } + } else { + showNoAppForFileTypeToast(mFileActivity.getApplicationContext()); + } } else { Log_OC.wtf(TAG, "Trying to open a NULL OCFile"); } } + /** + * Displays a toast stating that no application could be found to open the file. + * + * @param context the context to be able to show a toast. + */ + private void showNoAppForFileTypeToast(Context context) { + Toast.makeText(context, + R.string.file_list_no_app_for_file_type, Toast.LENGTH_SHORT) + .show(); + } public void shareFileWithLink(OCFile file) { @@ -205,6 +237,29 @@ public class FileOperationsHelper { } } + public void setPictureAs(OCFile file) { + if (file != null){ + if (file.isDown()) { + File externalFile = new File(file.getStoragePath()); + Uri sendUri = Uri.fromFile(externalFile); + Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); + intent.setDataAndType(sendUri, file.getMimetype()); + intent.putExtra("mimeType", file.getMimetype()); + mFileActivity.startActivityForResult(Intent.createChooser(intent, + mFileActivity.getString(R.string.set_as)), 200); + } else { +// TODO re-enable after resized images is available +// Uri sendUri = Uri.parse("content://" + DiskLruImageCacheFileProvider.AUTHORITY + file.getRemotePath()); +// Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); +// intent.setDataAndType(sendUri, file.getMimetype()); +// intent.putExtra("mimeType", file.getMimetype()); +// mFileActivity.startActivityForResult(Intent.createChooser(intent, "Set As"), 200); + } + } else { + Log_OC.wtf(TAG, "Trying to send a NULL OCFile"); + } + } + /** * Request the synchronization of a file or folder with the OC server, including its contents. *