我正在使用反射来调用 AudioManager.startBluetoothSco() 方法。它必须通过反射来完成,因为它只存在于 2.2 或更高版本的 SDK 中,但我的应用程序是为 2.0 的最低版本构建的。如果我只是在不使用 ProGuard 的情况下编译我的应用程序,一切都会正常工作——metod 在 2.2 中被正确调用,而在较低版本中则完全没有。但是当我使用 ProGuard 时,它根本不起作用。我假设 ProGuard 配置中有一个 KEEP 语句可以解决这个问题,但我不知道它应该是什么。这是我的代码中的 3 行:
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
Method startBT = AudioManager.class.getMethod("startBluetoothSco");
startBT.invoke(am);