AndroidManifest.xml に <uses-library> で指定したライブラリが存在するか確認する方法を調べた。
すべての端末で使わないため required を false にする必要があった。しかしそうすると、ライブラリが存在しない可能性があるため NoClassDefFoundError
や NoSuchMethodError
の例外が発生してしまう可能性がある。そこで Class.forName(String)
でクラスの存在を確認して対応した。
だが端末によってライブラリのバージョンが違い、クラスは存在していてもメソッドが存在しないケースが出てきた。一つひとつ確認するのは面倒だったので、やはり <uses-library> が存在するか確認することにした。
PackageManager.html#getSystemSharedLibraryNames() というそのまんまのメソッドがあった。なんで今まで気づかなかったんだろ…。