Я чувствую, что делаю что-то глупое здесь. Я настроил службу, которая прослушивает изменения в коллекции в моей базе данных firebase, и когда произошли изменения, приложение должно открываться, за исключением того, что действие не открывается. И сообщение журнала, и всплывающее уведомление появляются, когда данные изменяются в коллекции, но действие не открывается. Код из onStartCommand приведен ниже.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String input = intent.getStringExtra("inputExtra");
context = getApplicationContext();
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Example Service")
.setContentText(input)
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentIntent(pendingIntent)
.build();
startForeground(1, notification);
reference.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
for (DocumentChange documentChange : value.getDocumentChanges()) {
if (documentChange.getType() == DocumentChange.Type.MODIFIED) {
Log.d(TAG, "onComplete: reference modified");
Toast.makeText(context, "message received", Toast.LENGTH_SHORT).show();
Intent intent1 = new Intent(context, Open.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
}
}
});
return START_STICKY;
}
Любая помощь будет принята с благодарностью.
Android 10 (уровень API 29) и более поздние версии накладывают ограничения на то, когда приложения могут запускать действия, когда приложение работает в фоновом режиме. Эти ограничения помогают свести к минимуму прерывания для пользователя и предоставить пользователю больший контроль над тем, что отображается на его экране.
В целях запуска действий приложение, в котором запущена служба переднего плана, по-прежнему считается «в фоновом режиме».
Альтернативы показу активности
Приложения, работающие в фоновом режиме, должны отображать срочные уведомления, чтобы предоставить пользователю срочную информацию, а не запускать действие напрямую.
Исключения из ограничений: Есть некоторые исключения, в которых приложение может отображать активность напрямую, вот некоторые из них:
Более подробные статьи читайте это
Потому что не разрешено «автоматически» запускать действие из службы. В качестве альтернативы вы можете отобразить уведомление, которое должно запускать желаемое действие, когда пользователь явно нажимает на него.