Android LicenseChecker 因空指针异常而崩溃

标签 android crash

似乎如果 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/

相关文章:

java - SQLite更新查询Android

ios - 带有objc_setAssociatedObject和objc_registerClassPair的Swift奇怪的EXC_BAD_ACCESS崩溃

php - 网站应如何处理数据库崩溃

iphone - 运行泄漏时崩溃

android - 在应用程序中解压缩 .zip 文件 |加速器 |钛

android - WebView 在 Android 模拟器中不工作

android - 从 React Native 中的变量播放音频

powershell - 以1000个powershell导出/附加csv

php - 标记为崩溃的 mysql 表

安卓-loopj : User-space exception