package eu.siacs.conversations.ui.util; 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.util.Log; import android.widget.Toast; import java.io.File; import java.util.List; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; import eu.siacs.conversations.entities.DownloadableFile; import eu.siacs.conversations.persistance.FileBackend; public class ViewUtil { public static void view(Context context, Attachment attachment) { File file = new File(attachment.getUri().getPath()); final String mime = attachment.getMime() == null ? "*/*" : attachment.getMime(); view(context, file, mime); } public static void view (Context context, DownloadableFile file) { if (!file.exists()) { Toast.makeText(context, R.string.file_deleted, Toast.LENGTH_SHORT).show(); return; } String mime = file.getMimeType(); if (mime == null) { mime = "*/*"; } view(context, file, mime); } private static void view(Context context, File file, String mime) { Log.d(Config.LOGTAG,"viewing "+file.getAbsolutePath()+" "+mime); final Intent openIntent = new Intent(Intent.ACTION_VIEW); final Uri uri; try { uri = FileBackend.getUriForFile(context, file); } catch (SecurityException e) { Log.d(Config.LOGTAG, "No permission to access " + file.getAbsolutePath(), e); Toast.makeText(context, context.getString(R.string.no_permission_to_access_x, file.getAbsolutePath()), Toast.LENGTH_SHORT).show(); return; } openIntent.setDataAndType(uri, mime); openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); try { context.startActivity(openIntent); } catch (final ActivityNotFoundException e) { Toast.makeText(context, R.string.no_application_found_to_open_file, Toast.LENGTH_SHORT).show(); } } }