Я пытаюсь настроить AlarmManager в моем приложении, которое открывает другое приложение в указанное c время. Он работает, когда мое приложение открыто и на экране, но если я нажимаю кнопку «Домой» и отправляю свое приложение в фоновый режим, оно не работает. Как мне запустить AlarmManager, если мое приложение закрыто / находится в фоновом режиме?
MainActivity. java
public class MainActivity extends AppCompatActivity {
public static final int REQUEST_CODE=101;
public static int aHour;
public static int aMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//Some code that sets aHour and aMinute
public void setAlarm() {
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, amReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, aHour);
calendar.set(Calendar.MINUTE, aMinute);
if (am != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
else {
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
}
}
//Some code that triggers setAlarm()
}
amReciever. java
public class amReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, launcherService.class);
context.startService(i);
}
}
launcherService. java
public class launcherService extends IntentService {
public launcherService() {
super("LauncherService");
}
protected void onHandleIntent(Intent intent) {
Intent launcher = getPackageManager().getLaunchIntentForPackage("com.example.app");
if (launcher != null) {
startActivity(launcher);
}
}
}
AndroidManifest. xml
<receiver android:name=".amReceiver"
android:process=":remote">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service android:name=".launcherService" />