android-studio - Android Studio - 提示使用任何可用的应用程序打开下载的文件

标签 android-studio android-external-storage

我有一个使用 Firebase 从服务器接收 url 的应用程序。接收到 url 后,该 url 处的文件会自动保存在本地存储中(它们是 gpx 文件)。

但在此之后,我希望我的应用程序提示用户使用他们在手机上安装的任何导航应用程序打开下载的文件。类似于当您自己进入文件管理器,单击一个文件时,系统会向您显示可以打开该文件的所有应用程序,并让您选择(或直接使用默认设置打开它,如果您有的话)。

我找不到任何关于此的信息,并且包含“android studio”和“打开文件”的搜索主要显示有关如何管理源文件本身的教程,因此它们根本没有帮助。

最佳答案

你可以这样做:

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 .这应该可以实现您正在寻找的东西。

关于android-studio - Android Studio - 提示使用任何可用的应用程序打开下载的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822637/

相关文章:

java - 是否可以在我的电脑上设置外部目录(作为库)的路径?安卓

android - 如何在kotlin android中将base64字符串转换为图像

android - 无法使用 FileProvider 在 Android N 中打开外部存储文件

java - 为什么我的 Android 应用程序无法从存储中读取数据?

android - DownloadManager 无法使用 Pie 下载到三星上的外部存储

android-studio - 我更新了 Android Studio,现在 gradle 项目同步失败

android-studio - 如何在Android Studio中使用Gradle的先前版本?

android - 来自 CursorWindow 的错误 : Couldn't read row 0, col -1。在访问数据之前确保 Cursor 被正确初始化

Android Things 文件系统

android - 将相机中的图像存储在新文件夹android中