How to open any file saved in data/data using an intent?
I have files saved in data/data/package/files/myfolder/.
I try to open them 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 type of file, 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
According to me everything is fine, but I do not understand why the applications can not load the file.
android
add a comment |
I have files saved in data/data/package/files/myfolder/.
I try to open them 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 type of file, 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
According to me everything is fine, but I do not understand why the applications can not load the file.
android
add a comment |
I have files saved in data/data/package/files/myfolder/.
I try to open them 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 type of file, 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
According to me everything is fine, but I do not understand why the applications can not load the file.
android
I have files saved in data/data/package/files/myfolder/.
I try to open them 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 type of file, 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
According to me everything is fine, but I do not understand why the applications can not load the file.
android
android
edited Nov 22 '18 at 3:28
shizhen
3,78541335
3,78541335
asked Nov 22 '18 at 2:57
FrEqDeFrEqDe
11925
11925
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
/data/data/package/
is your app's private space, and not readable by other applications.
solutions are:
- export to somewhere in
Environment::getExternalStorage()
where readable by other applications - use
FileProvider
to grant temporary read access to your file.
add a comment |
use this
File file = new File("this is the file path");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "this is the mime type of file");
startActivityForResult(intent, 100);
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423250%2fhow-to-open-any-file-saved-in-data-data-using-an-intent%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
/data/data/package/
is your app's private space, and not readable by other applications.
solutions are:
- export to somewhere in
Environment::getExternalStorage()
where readable by other applications - use
FileProvider
to grant temporary read access to your file.
add a comment |
/data/data/package/
is your app's private space, and not readable by other applications.
solutions are:
- export to somewhere in
Environment::getExternalStorage()
where readable by other applications - use
FileProvider
to grant temporary read access to your file.
add a comment |
/data/data/package/
is your app's private space, and not readable by other applications.
solutions are:
- export to somewhere in
Environment::getExternalStorage()
where readable by other applications - use
FileProvider
to grant temporary read access to your file.
/data/data/package/
is your app's private space, and not readable by other applications.
solutions are:
- export to somewhere in
Environment::getExternalStorage()
where readable by other applications - use
FileProvider
to grant temporary read access to your file.
edited Nov 22 '18 at 3:18
shizhen
3,78541335
3,78541335
answered Nov 22 '18 at 3:18
AIMIN PANAIMIN PAN
249210
249210
add a comment |
add a comment |
use this
File file = new File("this is the file path");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "this is the mime type of file");
startActivityForResult(intent, 100);
add a comment |
use this
File file = new File("this is the file path");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "this is the mime type of file");
startActivityForResult(intent, 100);
add a comment |
use this
File file = new File("this is the file path");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "this is the mime type of file");
startActivityForResult(intent, 100);
use this
File file = new File("this is the file path");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "this is the mime type of file");
startActivityForResult(intent, 100);
answered Nov 22 '18 at 3:04
Har KalHar Kal
612415
612415
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423250%2fhow-to-open-any-file-saved-in-data-data-using-an-intent%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown