2016-08-06 18 views
0

データベースにアラームがいっぱいあり、アラームを作成するサービスが起動時に開始されますが、ループ内で一度クラッシュするそれらを作成します。エラーは、次のとおり'nullオブジェクト参照エラーのjava.lang.String android.content.Context.getPackageName()'

"java.lang.NullPointerExceptionが:NULL オブジェクト参照に仮想メソッド を起動しようと 'java.lang.Stringでandroid.content.Context.getPackageName()'"

EDIT:

コード:

public class NotificationServiceStartOnBoot extends Service { 

    UserDbHelper userDbHelper; 
    SQLiteDatabase sqLiteDatabase; 
    Context context; 
    Cursor cursor; 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.e("SERVICE", "STARTED..."); 
     userDbHelper = new UserDbHelper(getApplicationContext()); 
     sqLiteDatabase = userDbHelper.getReadableDatabase(); 
     cursor = userDbHelper.getNotifications(sqLiteDatabase); 
     Log.e("SERVICE", "About to begin loop..."); 
     if(cursor.moveToFirst()) 
     { 
      Log.e("SERVICE", "if statement accepted..."); 
      do 
      { 
       Log.e("SERVICE", "notification loop begun..."); 
       String date,UID; 

       date = cursor.getString(0); 
       UID = cursor.getString(1); 
       // Long notificationDate = Long.valueOf(date); 
       Long notificationUID = Long.valueOf(UID); 


       long milliSeconds= Long.parseLong(date); 
       //System.out.println(milliSeconds); 

       Calendar calendar = Calendar.getInstance(); 
       calendar.setTimeInMillis(milliSeconds); 


       final int _id = (int) System.currentTimeMillis(); 
       Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
       alarmIntent.putExtra("nID", notificationUID); 
       //make sure the intent have id's 
       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, _id, alarmIntent , 0); 

       AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 

      }while (cursor.moveToNext()); 
     } 
     Log.e("SERVICE", "outside if statement..."); 

     //NotificationGenerator.generateNotification(context, null, null, null, null); 
    } 

} 
+0

マニフェストにアプリケーションクラスを追加したことを確認してください: ' pRaNaY

答えて

0

あなたのコンテキストはnullです。 Context context;の文脈はどこに設定されましたか?コンテキストを使用する前に設定します。

+0

どうすれば設定できますか?他のすべてのクラスでは、 "context = container.getContext();"に設定しました。しかし、このクラスでは動作しません – user6548194

+0

@ user6548194あなたはその変数(上記のコードに基づいて)を取り除き、その出現を 'this'で置き換えることができます – Shaishav

+0

@Shaishav、ありがとうございます!それは働いた:D – user6548194

関連する問題