【问题标题】:Reliably detect PDF support on Android device可靠地检测 Android 设备上的 PDF 支持
【发布时间】:2011-06-21 12:40:38
【问题描述】:

我正在使用一种方法来检测 Android 设备上的 pdf 支持,就像这样

public boolean canDisplayPdf() {
    PackageManager packageManager = application.getPackageManager();
    Intent testIntent = new Intent(Intent.ACTION_VIEW);
    testIntent.setType("application/pdf");
    if (packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY).size() > 0) {
        return true;
    } else {
        return false;
    }
}

到目前为止,这一直很好。我知道至少 HTC 默认查看器、droidreader 和 adobe acrobat 会以这种方式报告并返回正确的结果。然而,我现在在市场控制台上得到了一个用户的评论,他说他在设备上支持 pdf,但是从应用程序的描述行为我得出结论,这个方法返回 false。

有没有更好的方法来检测对 pdf 的支持?

PS:我希望能够向用户询问有关市场的详细信息。

【问题讨论】:

  • 向用户询问市场详情是什么意思?喜欢在安装您的应用程序之前检查他们是否安装了 PDF 阅读器?
  • 我无法与用户就有关 Android 市场的评论展开对话。有时能够做到这一点会很棒。在这种情况下,例如很高兴知道安装了什么 pdf 应用程序,因为它有一个错误,即它不会对这个意图做出反应,恕我直言......我可以将此错误报告给所述应用程序的制造商。
  • 看起来他们使用的任何 pdf 查看器在处理意图时都没有设置为使用 CATEGORY_DEFAULT。您可以通过使用 0 作为您的标志而不是 PackageManager.MATCH_DEFAULT_ONLY 来解决这个问题,但是如果出于某种原因有应用程序有意在 pdf 上注册 ACTION_VIEW 但不想用于查看它们。这似乎不太可能,但这是一个广阔的世界,所以你永远不会知道。 :) 你正在做的是正确的方法。我同意能够回应用户会很好,否则这些问题会很痛苦。
  • 您不应该排除用户声明他的设备支持 PDF 不正确的可能性 :)。
  • 仅仅因为有一个 PDF 查看器并不意味着它为该文件类型注册了一个意图过滤器 - 用户可能必须先打开应用程序,浏览文件列表,然后从那里。询问用户他们有什么 PDF 阅读器。如果可能,请告诉他们下载 Adob​​e PDF 阅读器,然后重试。

标签: android pdf


【解决方案1】:

你做得对。您可以考虑更新应用程序的描述,说明您使用 Android 批准的方法和 application/pdf MIME 类型调用 PDF 应用程序。还要提到,如果用户在使用该应用程序时遇到任何问题,您将不胜感激发送电子邮件至 blahblah@myappsupport.com(或任何您的应用程序支持电子邮件地址设置)。也许他们会发送一封电子邮件,而不是只留下匿名评论。

【讨论】:

    【解决方案2】:

    从我发现的所有来源和在相当多的设备上进行的实际测试经验来看,我采取的方法是正确的。

    我没有收到任何进一步的反馈,我认为可能存在用户错误或涉及的 pdf 应用程序版本错误。

    【讨论】:

    • 不知道你为什么投了反对票 - 所以我刚刚给了你一个 +1
    猜你喜欢
    • 2017-07-13
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多