似乎如果 Android 手机未登录 Google Play,checkAccess 调用将抛出 NullPointerException 并最终使应用程序崩溃:
// user not logged in to Google Play
LicenseChecker licenseChecker = new LicenseChecker(...);
licenseChecker.checkAccess(...) // throws a nullpointer exception and crasches the app
NullPointerException 发生在 Android 框架的深处,在一个单独的线程中:
FATAL EXCEPTION: background thread
java.lang.NullPointerException
com.google.android.vending.licensing.LicenseValidator.verify()
因此应用程序似乎无法捕获它并避免崩溃。
有什么办法可以避免这种崩溃吗? (不登录 Google Play 应该是合法的情况)
我能想到的唯一方法是在调用 checkAccess 之前检查 Google Play 登录状态。
最佳答案
我修改了方法License Validator.verify(),在开头增加了保护检查:
public void verify(PublicKey publicKey, int responseCode, String signedData, String signature) {
if (signedData==null){
handleInvalidResponse();
return;
}
...
}
关于Android LicenseChecker 因空指针异常而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453194/