2015-01-02 2 views
0

Я совершенно не знаком с разработкой Android, поэтому я прошу прощения перед вручением, если то, что я прошу, очень просто, я уже давно общался с вами в течение нескольких часов.NullPointerException в BroadcastReceiver

В моем MainActivity я ссылаюсь на AlarmReceiver.class в намерении, а затем на PendingIntent и, наконец, на него установлен AlarmManager. Что я делаю, чтобы установить будильник, и это работает нормально, это когда срабатывает будильник, происходит Исключение.

Intent intent = new Intent(ourContext, AlarmReceiver.class); 

    PendingIntent pendingIntent = PendingIntent.getBroadcast(ourContext, 666, intent, 0); 

    AlarmManager alarmManager = (AlarmManager) ourContext.getSystemService(Context.ALARM_SERVICE); 

    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent); 

А потом в AlarmReceiver.class она простирается BroadcastReceiver, и делает вызов SDK. Эта часть кода запускается всякий раз, когда срабатывает Тревога, то есть когда выбранное время ржет, запустите этот код.

public void onReceive(Context arg0, Intent arg1) { 

    SDK.sendNotification(arg0, new Notification("alarm", "Top Line", "Bottom Line"), new SendNotificationListener() { 

     @Override 
     public void onSuccess(String s) { 
      Log.d("success", s); 
     } 

     @Override 
     public void onFailed(String s) { 
      Log.d("fail", s); 
     } 
    }); 
} 

SendNotification принимает 3 переменные, контекст, уведомление и уведомление.

Что я смог определить, я уверен, что это NotificationListener является проблемой и вызывает ошибку.

Вот StackTrace:

Process: com.example.timer:remote, PID: 27665 
    java.lang.RuntimeException: Unable to start receiver com.example.timer.AlarmReceiver: java.lang.NullPointerException 
      at android.app.ActivityThread.handleReceiver(ActivityThread.java:2452) 
      at android.app.ActivityThread.access$1700(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5146) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at com.example.imer.AlarmReceiver.onReceive(AlarmReceiver.java:21) 
      at android.app.ActivityThread.handleReceiver(ActivityThread.java:2445) 
      at android.app.ActivityThread.access$1700(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5146) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
      at dalvik.system.NativeStart.main(Native Method) 

Это строка 21:

SDK.sendNotification(arg0, new Notification("alarm", "Top Line", "Bottom Line"), new SendNotificationListener() { 
+0

Что такое «SDK» и где он инициализирован? –

+0

И что такое линия 21? – EJP

+0

Инициализируется в MainActivity. –

ответ

4

Если исключение здесь:

SDK.sendNotification(arg0, 
         new Notification("alarm", "Top Line", "Bottom Line"), 
         new SendNotificationListener() { 

тогда только возможно объяснение это SDK есть null. Убедитесь, что он правильно инициализирован; то есть ненулевое значение было , присвоенное ему. (И убедитесь, что вы не имеете несколько заявлений ... и что некоторые из них не инициализируются.)


Вы это как (предположительно) контрпоказание вывешенным.

SDK.initiate(getActivity(), "DEVCODE", new String[] { Scope }, 
       new AuthListener() { 
  1. Это не устанавливает SDK в ненулевое значение. Он не установлен (подсказка: присваивает) ничего, чтобы SDK.

    (Но гипотетически, это бы дать NPE, если SDK является переменной, это null и initiate является методом экземпляра.)

  2. Это заявление не может быть выполнена.

  3. Даже если чтоSDK переменные не null, может быть другая декларация SDK.

Короче говоря, это ничего не доказывает.

+0

. Я попытаюсь зарегистрировать его и посмотреть, logs null –

+2

@JesperJacobsen Это полная трата времени. Это * есть * null. Исключением это доказывает. Это то, что вы должны расследовать. Вы должны изучать * почему * он равен нулю. – EJP

+0

Хорошо, я просто все через шаг, шаг за шагом. Я согласен с ответом и надеюсь найти причину :) –

Смежные вопросы