Запускать службы в фоновом режиме Новые версии Android?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Запускать службы в фоновом режиме Новые версии Android?

Сообщение Гость »


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

Дайте мне знать, если вам нужна дополнительная помощь или у вас есть конкретные вопросы по реализации этой функции. Вот мой файл MainActivity.java

пакет com.ached.dalima; импортировать android.content.BroadcastReceiver; импортировать android.content.Context; импортировать android.content.Intent; импортировать android.content.IntentFilter; импортировать android.os.Bundle; импортировать android.view.View; импортировать android.widget.Button; импортировать android.widget.Toast; импортировать androidx.appcompat.app.AppCompatActivity; публичный класс MainActivity расширяет AppCompatActivity { частная кнопка unlockButton; частный ScreenUnlockReceiver screenUnlockReceiver; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_main); unlockButton = findViewById(R.id.unlockButton); Намерение ServiceIntent = новое намерение (это, ScreenUnlockService.class); startService (ServiceIntent); unlockButton.setOnClickListener(новый View.OnClickListener() { @Override общественная недействительность onClick (Просмотр v) { // Это пример обработки нажатия кнопки в вашей MainActivity showToast("Нажата кнопка разблокировки!"); } }); screenUnlockReceiver = новый ScreenUnlockReceiver (); } @Override защищенный недействительный onResume() { супер.онрезюме(); RegisterScreenUnlockReceiver(); } @Override защищенный недействительный onPause() { супер.онПауза(); unregisterScreenUnlockReceiver(); } частный недействительный showToast (String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } класс ScreenUnlockReceiver расширяет BroadcastReceiver { @Override public void onReceive (контекст контекста, намерение намерения) { если (intent.getAction() != ноль && Intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { showToast("Экран открыт!"); } } } частный недействительный RegisterScreenUnlockReceiver () { Фильтр IntentFilter = новый IntentFilter(Intent.ACTION_USER_PRESENT); RegisterReceiver (screenUnlockReceiver, фильтр); } // Отменяем регистрацию ScreenUnlockReceiver частная пустота unregisterScreenUnlockReceiver () { unregisterReceiver (screenUnlockReceiver); } } Ниже находится ScreenUnlockService.java

пакет com.ached.dalima; импортировать android.app.Notification; импортировать android.app.NotificationChannel; импортировать android.app.NotificationManager; импортировать android.app.Service; импортировать android.content.BroadcastReceiver; импортировать android.content.Context; импортировать android.content.Intent; импортировать android.os.Handler; импортировать android.os.IBinder; импортировать android.widget.Toast; импортировать androidx.core.app.NotificationCompat; публичный класс ScreenUnlockService расширяет Service { частный статический финал int NOTIFICATION_ID = 1; частная статическая окончательная строка CHANNEL_ID = «Канал»; частный обработчик обработчика; частный ScreenUnlockReceiver screenUnlockReceiver; @Override общественная недействительность onCreate() { супер.onCreate(); screenUnlockReceiver = новый ScreenUnlockReceiver (); обработчик = новый обработчик(); } @Override public int onStartCommand (Намерение, int flags, int startId) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { createNotificationChannel(); } Уведомление о намеренииIntent = новое намерение (this, MainActivity.class); Уведомление об уведомлении = новый NotificationCompat.Builder(this, CHANNEL_ID) .setContentTitle("Аудиосервис") .setContentText("Воспроизведение звука в фоновом режиме") .setSmallIcon(R.drawable.ic_notification) .строить(); startForeground (NOTIFICATION_ID, уведомление); вернуть START_STICKY; } @Override общественная недействительность onDestroy () { супер.onDestroy(); } @Override public IBinder onBind (Намерение) { вернуть ноль; } частный недействительный createNotificationChannel () { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { Имя CharSequence = getString(R.string.channel_name); Описание строки = getString(R.string.channel_description); int важность = NotificationManager.IMPORTANCE_LOW; Канал NotificationChannel = новый NotificationChannel (CHANNEL_ID, имя, важность); канал.setDescription(описание); NotificationManager NotificationManager = getSystemService(NotificationManager.class); NotificationManager.createNotificationChannel(канал); } } частный недействительный showToast (String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } класс ScreenUnlockReceiver расширяет BroadcastReceiver { @Override public void onReceive (контекст контекста, намерение намерения) { if (intent.getAction() != null && Intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { showToast("Экран здесь открыт!"); } } } } Ниже находится файл получателя

пакет com.ached.dalima; импортировать android.content.BroadcastReceiver; импортировать android.content.Context; импортировать android.content.Intent; публичный класс ScreenUnlockReceiver расширяет BroadcastReceiver { @Override public void onReceive (контекст контекста, намерение намерения) { if (intent.getAction() != null && Intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { // Обнаружено событие разблокировки экрана // Здесь вы можете выполнять действия, когда экран разблокирован. } } } Ниже приведен файл манифеста

Проблема в том, что я хочу, чтобы приложение работало в фоновом режиме и отображало всплывающие сообщения даже после его удаления из списка последних приложений.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»