Java 如何检查android设备是否支持库?

Java 如何检查android设备是否支持库?,java,android,classloader,Java,Android,Classloader,我用IR blaster创建了一个Android应用程序,我希望我的代码检查Android设备是否支持这些库。当其他设备安装我的应用程序时,它会崩溃。我怎样才能避免这种情况 我想让我的代码获取有关手机是否支持我的应用程序的信息。这与加载JDBC驱动程序的问题类似。如果驱动程序不存在,你不想让整个应用程序崩溃 解决方案的基本原则是使用 这允许您检查类是否存在,如果不存在,则抛出异常 编辑: 需要明确的是,这之所以有效,之所以有必要,是因为如果Java因为没有类而无法执行代码,那么Java会将其视为

我用IR blaster创建了一个Android应用程序,我希望我的代码检查Android设备是否支持这些库。当其他设备安装我的应用程序时,它会崩溃。我怎样才能避免这种情况


我想让我的代码获取有关手机是否支持我的应用程序的信息。

这与加载JDBC驱动程序的问题类似。如果驱动程序不存在,你不想让整个应用程序崩溃

解决方案的基本原则是使用

这允许您检查类是否存在,如果不存在,则抛出异常

编辑:

需要明确的是,这之所以有效,之所以有必要,是因为如果Java因为没有类而无法执行代码,那么Java会将其视为灾难性的失败(a-a)。因此,对缺少的类执行任何直接引用都将抛出此错误。根据报告:

当抛出错误时,应用程序代码不应捕获这些错误


但是,当
Class.forName()
无法找到类(或对a的更多直接调用)时,将抛出一个。因为这是一个异常,而不是一个错误,所以可以捕获它。由于函数以字符串作为参数,您不需要直接引用类(只需在字符串中给出它的名称),因此可以在不直接引用类的情况下执行检查,从而不会使程序崩溃。

因为该API没有公开的AFAICT文档,除了HTC之外,任何人都很难帮助您。您是否在清单中使用
元素来表示您要使用此库?清单中没有任何内容…只有在Java中。另一种可能的方法是检查设备是否具有com.sec.feature.spen_usp功能,但据我所知,它是从JB开始工作的…这是如何工作的?我怀疑三星的产品(
com.sec.feature.spen_usp
)与HTC功能相关。无论如何,您需要联系HTC AFAIK。我调整了标签,希望HTC能够回答您的SO问题。但是,由于您必须首先单独联系他们才能访问此合作伙伴API,他们可能会告诉您如何获得该合作伙伴API的支持。好的。我将向HT发送电子邮件C.谢谢。它有效吗?在初始化函数上使用try-catch也有效吗?不,我不是故意的,因为这是帖子上说的。我问帖子上说的是否有效,如果作为替代方案,尝试为初始化函数添加try-catch也有效(同样,不是使用类.ForName())不。你会遇到一个错误,而不是一个例外。根据文档,你真的不应该捕捉错误,当你这样做的时候,你会进入一个非常危险的领域。