Android Studio - 提示使用任何可用的应用程序打开下载的文件
Android Studio - prompt to open a downloaded file with any application available
我有一个使用 Firebase 从服务器接收 urls 的应用程序。当收到 url 时,url 处的文件会自动保存在本地存储中(它们是 gpx 文件)。
但在此之后,我希望我的应用程序提示用户使用他们在 phone 上安装的任何导航应用程序打开下载的文件。类似于您自己转到文件管理器,单击一个文件,系统会向您显示所有可以打开该文件的应用程序,并让您选择(或者直接使用默认设置打开它,如果有的话)。
我找不到任何关于此的内容,包含 "android studio" 和 "open file" 的搜索显示的大部分教程都是关于如何自己管理源文件的,因此它们根本没有帮助。
你可以这样做:
String mimeType = myMime.getMimeTypeFromExtension(fileExt(getFile()).substring(1));
newIntent.setDataAndType(Uri.fromFile(getFile()),mimeType);
private String fileExt(String url) {
if (url.indexOf("?") > -1) {
url = url.substring(0, url.indexOf("?"));
}
if (url.lastIndexOf(".") == -1) {
return null;
} else {
String ext = url.substring(url.lastIndexOf(".") + 1);
if (ext.indexOf("%") > -1) {
ext = ext.substring(0, ext.indexOf("%"));
}
if (ext.indexOf("/") > -1) {
ext = ext.substring(0, ext.indexOf("/"));
}
return ext.toLowerCase();
}
}
这允许您根据文件扩展名获取类型。然后 startActivity
传入 newIntent
。这应该可以达到您的要求。
我有一个使用 Firebase 从服务器接收 urls 的应用程序。当收到 url 时,url 处的文件会自动保存在本地存储中(它们是 gpx 文件)。
但在此之后,我希望我的应用程序提示用户使用他们在 phone 上安装的任何导航应用程序打开下载的文件。类似于您自己转到文件管理器,单击一个文件,系统会向您显示所有可以打开该文件的应用程序,并让您选择(或者直接使用默认设置打开它,如果有的话)。
我找不到任何关于此的内容,包含 "android studio" 和 "open file" 的搜索显示的大部分教程都是关于如何自己管理源文件的,因此它们根本没有帮助。
你可以这样做:
String mimeType = myMime.getMimeTypeFromExtension(fileExt(getFile()).substring(1));
newIntent.setDataAndType(Uri.fromFile(getFile()),mimeType);
private String fileExt(String url) {
if (url.indexOf("?") > -1) {
url = url.substring(0, url.indexOf("?"));
}
if (url.lastIndexOf(".") == -1) {
return null;
} else {
String ext = url.substring(url.lastIndexOf(".") + 1);
if (ext.indexOf("%") > -1) {
ext = ext.substring(0, ext.indexOf("%"));
}
if (ext.indexOf("/") > -1) {
ext = ext.substring(0, ext.indexOf("/"));
}
return ext.toLowerCase();
}
}
这允许您根据文件扩展名获取类型。然后 startActivity
传入 newIntent
。这应该可以达到您的要求。