1package eu.siacs.conversations.ui.util;
2
3import android.content.ActivityNotFoundException;
4import android.content.Context;
5import android.content.Intent;
6import android.content.pm.PackageManager;
7import android.content.pm.ResolveInfo;
8import android.net.Uri;
9import android.util.Log;
10import android.widget.Toast;
11
12import java.io.File;
13import java.util.List;
14
15import eu.siacs.conversations.Config;
16import eu.siacs.conversations.R;
17import eu.siacs.conversations.persistance.FileBackend;
18
19public class ViewUtil {
20
21 public static void view(Context context, Attachment attachment) {
22 File file = new File(attachment.getUri().getPath());
23 final String mime = attachment.getMime() == null ? "*/*" : attachment.getMime();
24 view(context, file, mime);
25 }
26
27 public static void view(Context context, File file, String mime) {
28 Intent openIntent = new Intent(Intent.ACTION_VIEW);
29 Uri uri;
30 try {
31 uri = FileBackend.getUriForFile(context, file);
32 } catch (SecurityException e) {
33 Log.d(Config.LOGTAG, "No permission to access " + file.getAbsolutePath(), e);
34 Toast.makeText(context, context.getString(R.string.no_permission_to_access_x, file.getAbsolutePath()), Toast.LENGTH_SHORT).show();
35 return;
36 }
37 openIntent.setDataAndType(uri, mime);
38 openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
39 PackageManager manager = context.getPackageManager();
40 List<ResolveInfo> info = manager.queryIntentActivities(openIntent, 0);
41 if (info.size() == 0) {
42 openIntent.setDataAndType(uri, "*/*");
43 }
44 try {
45 context.startActivity(openIntent);
46 } catch (ActivityNotFoundException e) {
47 Toast.makeText(context, R.string.no_application_found_to_open_file, Toast.LENGTH_SHORT).show();
48 }
49 }
50
51}