BroadcastReceiver не запускается при закрытии приложения - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь сделать так, чтобы мое приложение запускало некоторый код один раз в день в 6:00. Это работает очень хорошо, когда приложение открыто и на переднем плане, но если приложение закрывается, проводя его, код никогда не вызывается в соответствующее время.

AlarmReceiver. java (В целях тестирования я просто пытаюсь отобразить тост, чтобы убедиться, что он работает)

public class AlarmReceiver extends BroadcastReceiver {

    public static final String intentAction = "com.mpagliaro98.action.NOTIFICATIONS";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(intentAction)) {
            Toast.makeText(context, "RECEIVER CALLED", Toast.LENGTH_LONG).show();
        }
    }
}

MainActivity. java (где устанавливается будильник)

public class MainActivity extends AppCompatActivity {

    ...

    private void setRecurringAlarm() {
        // Set this to run at 6am
        Calendar updateTime = Calendar.getInstance();
        updateTime.setTimeZone(TimeZone.getDefault());
        updateTime.set(Calendar.HOUR_OF_DAY, 6);
        updateTime.set(Calendar.MINUTE, 0);
        updateTime.set(Calendar.SECOND, 0);
        updateTime.set(Calendar.MILLISECOND, 0);

        // Build the pending intent and set the alarm
        Intent i = new Intent(AlarmReceiver.intentAction);
        PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),
                0, i, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
        assert am != null;
        am.setRepeating(AlarmManager.RTC, updateTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
    }
}

AndroidManifest. xml (только соответствующие части)

<uses-permission android:name="android.permission.SET_ALARM" />

<receiver
    android:name=".AlarmReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="com.mpagliaro98.action.NOTIFICATIONS" />
    </intent-filter>
</receiver>

Я прочитал десятки подобных проблем на этом сайте и в других местах. и я серьезно в растерянности, почему это не сработает. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 15 марта 2020

Попробуйте изменить приемник на

<receiver android:process=":remote" android:name="AlarmReceiver"></receiver>

Должен ли я использовать android: process = ": remote" в моем приемнике?

...