Я сделал приложение, которое работает с игровыми сервисами. Я тестировал свое приложение на HTC 310, nexus, lenovo p780 и некоторых других устройствах. Он вообще не падает. Я установил Crashlytics и получил странный отчет о сбое:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at com.preferences.iaps.IabHelper.queryPurchases(IabHelper.java:829)
at com.preferences.iaps.IabHelper.queryInventory(IabHelper.java:557)
at com.preferences.iaps.IabHelper.queryInventory(IabHelper.java:521)
at com.preferences.iaps.IabHelper$2.run(IabHelper.java:614)
at java.lang.Thread.run(Thread.java:818)
Я получаю эту ошибку от самсунгов, таких как s4, s5. Проблема с этими устройствами или проблема в приложении?
Вот пример, когда я вызываю и передаю контекст Iabhelper:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
mHelper = new IabHelper(mActivity, base64EncodedPublicKey);
mHelper.enableDebugLogging(true);
mHelper.startSetup(this);
}
Вот что вызывает исключение брошенного нулевого указателя: (строка 829):
logDebug("Package name: " + mContext.getPackageName());
Здесь я получаю контекст (тот же класс, где ошибка)
public IabHelper(Context ctx, String base64PublicKey) {
mContext = ctx.getApplicationContext();
mSignatureBase64 = base64PublicKey;
logDebug("IAB helper created.");
}
Context
, то почемуmContext = ctx.getApplicationContext();
? Почему неmContext = ctx;
? Вы редко должны действительно нуждаться вgetApplicationContext()
. Особенно, когда вы уже проходитеContext
- person codeMagic   schedule 17.08.2015