I have files saved in data / data / mypackage / files / myfolder /. I try to open with the following method:
public static void openFile(Context context, File url) throws IOException {
// Create URI
File file = url;
Uri uri = Uri.fromFile(file);
Log.d("pathAttach", uri.toString());
Intent intent = new Intent(Intent.ACTION_VIEW);
if (url.toString().contains(".doc") || url.toString().contains(".docx")) {
// Word document
intent.setDataAndType(uri, "application/msword");
} else if(url.toString().contains(".pdf")) {
// PDF file
intent.setDataAndType(uri, "application/pdf");
} else if(url.toString().contains(".ppt") || url.toString().contains(".pptx")) {
// Powerpoint file
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
} else if(url.toString().contains(".xls") || url.toString().contains(".xlsx")) {
// Excel file
intent.setDataAndType(uri, "application/vnd.ms-excel");
} else if(url.toString().contains(".zip") || url.toString().contains(".rar")) {
// WAV audio file
intent.setDataAndType(uri, "application/x-wav");
} else if(url.toString().contains(".rtf")) {
// RTF file
intent.setDataAndType(uri, "application/rtf");
} else if(url.toString().contains(".wav") || url.toString().contains(".mp3")) {
// WAV audio file
intent.setDataAndType(uri, "audio/x-wav");
} else if(url.toString().contains(".gif")) {
// GIF file
intent.setDataAndType(uri, "image/gif");
} else if(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) {
// JPG file
intent.setDataAndType(uri, "image/jpeg");
} else if(url.toString().contains(".txt")) {
// Text file
intent.setDataAndType(uri, "text/plain");
} else if(url.toString().contains(".3gp") || url.toString().contains(".mpg") || url.toString().contains(".mpeg") || url.toString().contains(".mpe") || url.toString().contains(".mp4") || url.toString().contains(".avi")) {
// Video files
intent.setDataAndType(uri, "video/*");
} else {
intent.setDataAndType(uri, "*/*");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
The method does open the correct application for each file type, however the application does not show the file why it says it does not exist.
The method calls it to call like this:
String pathAttach = context.getFilesDir().getAbsolutePath() +
File.separator + "myfolder/" +
messagesList.get(pos).getContent();
FileOpenUitl.openFile(context, new File(pathAttach));
By console I have printed the value of pathAttach
and uri.toString()
the values obtained for an image are:
-
pathAttach:
/data/data/io.github.myuser.myapp/files/myfolder/6010141d505105c092eaf6d002a868a18b48544592cb304a3f173c30b4ee9892.jpeg
-
uri.toString ():
file: ///data/data/io.github.myuser.myapp/files/myfolder/6010141d505105c092eaf6d002a868a18b48544592cb304a3f173c30b4ee9892.jpeg
Everything is fine with me, but I do not understand why applications can not load the file.