Android - 检测 URL mime 类型?

2023-11-26

在我的 Android 应用程序中,我有从数据库访问的各种 URL,然后打开 WebView 来显示该 URL。通常,该 url 看起来像这样:

http://www.mysite.com/referral.php?id=12345

这些引荐链接总是重定向/转发到另一个网址。有时,生成的 url 直接指向图像。有时是 PDF。有时只是另一个 HTML 页面。

无论如何,我需要能够区分这些不同类型的页面。例如,如果生成的 URL 链接到 PDF 文件,我想使用 Google Docs Viewer 技巧来显示它。如果它只是一个普通的 HTML 页面,我想简单地显示它,如果它是一个图像,我计划下载该图像并以某种方式在我的应用程序中显示它。

我认为解决此问题的最佳方法是确定生成的 url 的 mime 类型。你怎么做到这一点?还有更好的方法来实现我想要的吗?


您可以通过以下方式找出 MIME 类型的内容:

webView.setDownloadListener(new DownloadListener() {
    @Override
    public void onDownloadStart(String url, String userAgent,
            String contentDisposition, String mimetype,
            long contentLength) {

        //here you getting the String mimetype
        //and you can do with it whatever you want
    }
});

在此方法中,您可以检查 mimetype 是否为 pdf,并使用修改后的 url 通过 Google Docs 在 WebView 中显示它,如下所示:

String pdfPrefixUrl = "https://docs.google.com/gview?embedded=true&url="

if ("application/pdf".equals(mimetype)) {
     String newUrl = pdfPrefixUrl + url;
     webView.loadUrl(newUrl);
}    

希望它会有所帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 检测 URL mime 类型? 的相关文章

随机推荐

  • Clang 修改析构函数中的返回值?

    在尝试编写一个类来计算调用其构造函数和析构函数之间的持续时间时 我遇到了我认为是 clang 中的错误 编辑 这不是一个错误 它是实现定义的复制省略 The timer下面的结构体保留一个指向作为引用传入的持续时间对象的指针 并将范围的持续
  • Python exec 和 __name__

    当我跑步时 exec print name 它打印 main 但是当我跑步时 exec print name 它打印builtins 如何使第二个示例也打印 main 我试图实现的是运行一段代码exec 因此从角度来看它看起来像是从命令行运
  • ddply 错误的含义:“名称”属性 [9] 必须与向量 [1] 的长度相同

    我正在学习黑客机器学习 但我被困在这条线上 from weight lt ddply priority train From EMail summarise Freq length Subject 这会产生以下错误 Error in att
  • 哪个提交有这个 blob?

    给定 blob 的哈希值 有没有办法获取树中包含该 blob 的提交列表 以下两个脚本都将 blob 的 SHA1 作为第一个参数 在其后面 可选 任何参数git log会明白 例如 all搜索所有分支而不仅仅是当前分支 或者 g在转发日志
  • 计算图片中蓝色像素的数量

    我是 openCV 和 Python 的新手 有一个关于它的问题 我试图找到图片的蓝色像素数量 以便我可以将它们用作阈值 以便将其他图片与它进行比较 我已尝试查看文档 但尚未找到任何有用的内容 任何人都可以给出提示或帮助吗 BLUE MAX
  • “object”不包含动态定义

    我正在使用下面描述的方法 即返回动态结果 public static dynamic GetCouponDetailsbyCouponID Guid couponID using var loEntities new Entities dy
  • 处理带有 Yield 返回的 Enumerable 对象的正确模式是什么?

    是否存在返回 Enumerable 中所有项目的标准模式 我经常发现我的一些代码反映了以下模式 public IEnumerable YieldReturningFunction logic and various standard yie
  • 命名空间“<全局命名空间>”已包含“工作流”的定义

    我正在开展自定义工作流程活动 我使用代码生成工具 CrmSvcUtil exe 创建了自己的 helper cs 早期绑定实体类 当我尝试编译代码时 它返回以下错误 命名空间 已包含 工作流 的定义 来自 Helper cs 文件 有谁知道
  • 如何创建我的记录器?

    我使用 log4j 进行日志记录 我想修改方法 warn error 我想修改这个方法中的消息 那么 有什么办法 如何创建我自己的记录器呢 public class MyLogger extends Logger protected MyL
  • 在 R 中,如何逐行读取 CSV 文件并将内容识别为正确的数据类型?

    我想读取一个 CSV 文件 其第一行是变量名称 后续行是这些变量的内容 有些变量是数字 有些是文本 有些甚至是空的 file path file csv f file file r varnames strsplit readLines f
  • 安装时在 Inno Setup 中显示许可协议链接

    我正在为我的应用程序使用 Inno Setup 我想在安装时在 Inno Setup 中显示一个链接 许可协议 单独的许可协议向导除外 我想将此链接与某些任务结合起来 当用户单击该链接时 它将导航到特定的 URL 我知道我来晚了 以下代码脚
  • 为什么这个 Java 正则表达式会导致“非法转义字符”错误?

    我正在研究一个上一个问题的解决方案 尽我所能 使用正则表达式 我的模式是 d 4 w 3 0 1 9 12 0 9 3 01 01 0 9 2 0 3 0 5 0 9 2 根据 NetBeans 我有两个非法转义字符 我猜它与 d 和 w
  • 相当于Firestore中的.push?

    我正在尝试将以前使用实时数据库的 firebase 实现转换为使用 firestore 因为我喜欢集合的想法以及使用它的好处 我如何将以下内容实现为 firestore 等效项 firebase database ref documentP
  • Django 将现有字段更改为外键

    我有一个 Django 模型 以前看起来像这样 class Car models Model manufacturer id models IntegerField 还有另一种模型叫Manufacturer那id字段指的是 然而 我意识到使
  • Hibernate 在 HQL 中处理“@”字符时遇到困难

    使用 Hibernate 和 Spring Social 我正在尝试通过电子邮件地址查询数据库 当我执行此查询时 公共帐户 findAccountByUsername String 用户名 Session session sessionFa
  • $观察一个物体

    我想监视字典中的更改 但由于某种原因未调用监视回调 这是我使用的控制器 function MyController scope scope form name my name surname surname scope watch form
  • 是否可以终止正在运行的 Web Worker?

    我有一个网络工作人员使用 ajax 请求运行一项耗时的例行任务 我可以从主线程终止它们而不等待它们完成吗 这就是我生成和终止它的方式 button parse categories click function if parseCatego
  • 使用和不使用额外变量时的奇怪浮点行为,为什么?

    当我在 VC 2013 32 位 无优化 中运行以下代码时 include
  • C# 寻找相似颜色

    我想调用带有参数颜色的方法 但有很多颜色仅存在色度差异 我怎样才能找到与我的颜色只有一点点不同的颜色 例如 AntiqueWhite 和 Bisque Here s调色板 Bitmap LogoImg new Bitmap file1 jp
  • Android - 检测 URL mime 类型?

    在我的 Android 应用程序中 我有从数据库访问的各种 URL 然后打开 WebView 来显示该 URL 通常 该 url 看起来像这样 http www mysite com referral php id 12345 这些引荐链接