-1
Я хочу, чтобы начать службу в фоновом режиме в определенное время, для отладки я запуск службы при запуске приложения, но, как только служба приложение запускается аварии с этим исключением:Android служба аварии по телефону с помощью сигнализации
java.lang.RuntimeException: Unable to instantiate service com.nexus.nsnik.gymchart.Downalod.VersionService: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
Мой код:
private void setAlarm() {
Intent intent = new Intent(this, VersionService.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.set(java.util.Calendar.HOUR_OF_DAY,15);
calendar.set(java.util.Calendar.MINUTE, 46);
calendar.set(java.util.Calendar.SECOND, 0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Класс обслуживания:
public class VersionService extends IntentService{
long version = 0;
DatabaseReference mRoot = FirebaseDatabase.getInstance().getReference();
DatabaseReference mVersionChild = mRoot.child("version");
SharedPreferences spf = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor spfe = spf.edit();
public VersionService(){
super("versionCheckService");
}
@Override
protected void onHandleIntent(Intent intent) {
mVersionChild.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
version = (long) dataSnapshot.getValue();
if(version!=0){
if(version!=spf.getLong(getResources().getString(R.string.versionNo),1089)){
startService(new Intent(VersionService.this,DownloadService.class));
spfe.putLong(getResources().getString(R.string.versionNo),version);
newDatabaseNotification();
}else {
newDatabaseNotification();
}
}else {
newDatabaseNotification();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void newDatabaseNotification() {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(getResources().getString(R.string.app_name))
.setContentText(getResources().getString(R.string.newdatabase));
NotificationManager mNotififcationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
mNotififcationManager.notify(0,mBuilder.build());
}
Можете ли вы предоставить мне строку, где отображается ошибка? –
где вы вызываете метод Context.getPackageName()? –
@KostasDrak i не вызывал Context.getPackageName() где-либо – Nsnik