How to open any file saved in data / data using an intent?

0

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.

    
asked by FrEqDe 22.11.2018 в 03:50
source

0 answers