Как написать в firebase на заданное время? - PullRequest
0 голосов
/ 26 марта 2019

Я хочу создать приложение с будильником, которое в установленное время вместо вибрации запишет в базу данных firebase.Я использую код https://github.com/PPartisan/Simple-Alarms в качестве базового кода будильника, но я сталкиваюсь с ошибками.Если у кого-то есть рабочий код аналогичного приложения или ссылка, которая будет вам полезна.

public final class AlarmReceiver extends BroadcastReceiver {

private Firebase fire;
Context thiscontext;
private static final String BUNDLE_EXTRA = "bundle_extra";
private static final String ALARM_KEY = "alarm_key";
@Override
public void onReceive(Context context, Intent intent) {

    Firebase.setAndroidContext(AlarmReceiver.this.thiscontext);


    final Alarm alarm = intent.getBundleExtra(BUNDLE_EXTRA).getParcelable(ALARM_KEY);
    assert alarm != null;
    final int id = AlarmUtils.getNotificationId(alarm);

    final NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    final Intent notifIntent = new Intent(context, AlarmLandingPageActivity.class);
    notifIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    final PendingIntent pIntent = PendingIntent.getActivity(
            context, id, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT
    );

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context,"M_CH_ID");
    builder.setSmallIcon(R.drawable.ic_alarm_white_24dp);
    builder.setColor(ContextCompat.getColor(context, R.color.accent));
    builder.setContentTitle(context.getString(R.string.app_name));
    builder.setContentText(alarm.getLabel());
    builder.setTicker(alarm.getLabel());
    builder.setVibrate(new long[] {1000,500,1000,500,1000,500});
    builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
    builder.setContentIntent(pIntent);
    builder.setAutoCancel(true);
    builder.setPriority(Notification.PRIORITY_HIGH);

    fire = new Firebase("https://alarmclock-8u7i2.firebaseio.com/");

    Firebase fireChild = fire.child("Alarm");
    fireChild.setValue("ALARM ON");

    manager.notify(id, builder.build());

    //Reset Alarm manually
    setReminderAlarm(context, alarm);

}

Ошибка: Process: com.banaao.makersplace.progx, PID: 5561 java.lang.RuntimeException: Unable to start receiver com.banaao.makersplace.progx.service.AlarmReceiver: java.lang.NullPointerException: Can't pass null for argument 'context' in setAndroidContext() at android.app.ActivityThread.handleReceiver(ActivityThread.java:3194) at android.app.ActivityThread.-wrap17(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1672) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.NullPointerException: Can't pass null for argument 'context' in setAndroidContext() at com.firebase.client.Firebase.setAndroidContext(Firebase.java:972) at com.banaao.makersplace.progx.service.AlarmReceiver.onReceive(AlarmReceiver.java:37) at android.app.ActivityThread.handleReceiver(ActivityThread.java:3187) at android.app.ActivityThread.-wrap17(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1672) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...