¿Como abrir cualquier archivo guardado en data/data usando un intent?

Tengo archivos guardados en data/data/mypackage/files/myfolder/. Los intento abrir con el siguiente método:

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); } 

El método sí abre la aplicación correcta para cada tipo de archivo, sin embargo la aplicación no muestra el archivo por qué dice que no existe.

El método lo mando a llamar de esta forma:

FileOpenUitl.openFile(context, new File(pathAttach)); String pathAttach = context.getFilesDir().getAbsolutePath() +                             File.separator + "myfolder/" +                             messagesList.get(pos).getContent(); 

Por consola he impreso el valor de pathAttach y de uri.toString() los valores obtenidos para una imagen son:

  • pathAttach:

    /data/data/io.github.ziceck.appgaci001/files/myfolder/6010141d505105c092eaf6d002a868a18b48544592cb304a3f173c30b4ee9892.jpeg

  • uri.toString():

    file:///data/data/io.github.myuser.myapp/files/myfolder/6010141d505105c092eaf6d002a868a18b48544592cb304a3f173c30b4ee9892.jpeg

Según yo todo está bien, pero no entiendo por qué las aplicaciones no pueden cargar el archivo.