在Android设备上可靠地检测PDF支持
我正在使用一种方法检测Android设备上的pdf支持,如下所示在Android设备上可靠地检测PDF支持,android,pdf,Android,Pdf,我正在使用一种方法检测Android设备上的pdf支持,如下所示 public boolean canDisplayPdf() { PackageManager packageManager = application.getPackageManager(); Intent testIntent = new Intent(Intent.ACTION_VIEW); testIntent.setType("application/pdf"); if (packageM
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会以这种方式得到报告,并返回正确的结果。然而,我现在在market console上收到一位用户的评论,说他在设备上支持pdf,但从应用程序的描述行为来看,我得出结论,该方法返回false
有没有更好的方法来检测pdf支持
附言:我希望能够询问用户有关市场的详细信息。你做得对。你可以考虑更新你的应用程序的描述,以告诉你使用Android批准的应用程序/PDF MIME类型的PDF应用程序。此外,如果用户对该应用程序有任何问题,请发送电子邮件至blahblah@myappsupport.com(或您的应用程序支持电子邮件地址设置为什么)。也许他们会发一封电子邮件,而不是只留下匿名评论。从我找到的所有来源以及在各种设备上进行测试的实践经验来看,我所采取的方法是正确的
我没有得到任何进一步的反馈,我认为可能是用户错误或涉及到一个糟糕的pdf应用程序版本 你问用户有关市场的详细信息是什么意思?在他们安装你的应用程序之前,是否要检查他们是否安装了PDF阅读器?我无法与用户就Android market上的评论展开对话。有时候能做到这一点会很好。在这种情况下,如果知道安装了什么pdf应用程序,那就太好了,因为它有一个bug,因为它不会对这个意图作出反应。。。我可以向上述应用程序的制造商报告这个错误。看起来他们使用的任何pdf查看器在处理意图时都没有设置为使用默认类别。你可以使用0作为你的标志,而不是PackageManager.MATCH_DEFAULT_,来解决这个问题,但是如果出于某种原因,有一些应用程序有意注册PDF上的ACTION_视图,但不想用于查看它们,那么这可能会给你带来虚假的结果。这似乎不太可能,但这是一个广阔的世界,所以你永远不会知道。:)你所做的是正确的方法。我同意能够回应用户是件好事,因为这些问题在其他方面是痛苦的。你不应该排除用户声称其设备上支持PDF的可能性:)。仅仅因为有PDF查看器并不意味着它为该文件类型注册了意图过滤器-用户可能必须首先打开应用,浏览文件列表,然后从中打开一个。询问用户他们有什么PDF阅读器。如果可能的话,告诉他们下载AdobePDF阅读器,然后再试一次。不知道为什么你会被否决——所以我给了你+1