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

我创建了一个带有IR Blaster的Android应用程序,我希望我的代码能够检查Android设备是否支持这些库。 当另一台设备安装我的应用程序时,它会崩溃。 我怎么能避免这个?

我希望我的代码能够获取有关手机是否支持我的应用的信息。

这与加载JDBC驱动程序类似。 如果驱动程序不存在,您不希望崩溃整个应用程序。

解决方案的基本原则是使用Class.forName()

这使您可以检查类是否存在,如果不存在则抛出exception。

编辑:

要清楚 – 之所以能够解决这个问题,以及为什么这是必要的,如果Java因为没有类而无法执行代码,那么Java会将此视为灾难性故障( 错误 – 特异性为NoClassDefFoundError )。 因此,执行对缺少的类的任何直接引用都将引发此错误。 根据文件 :

抛出错误时,应该不会被应用程序代码捕获。

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