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

use*_*687 2 java android classloader

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

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

Phi*_*ing 5

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

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

这使您可以检查类是否存在,如果不存在则抛出异常.

编辑:

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

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

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