Я работаю над приложением, в котором мне нужно показать активность пользователю, даже если приложение закрыто, для этого я использую Service
, и из этого сервиса я открываю свой Activity
с именем OverlayActivity.java.
Я получаю OverlayActivity, когда приложение открыто или находится в диспетчере задач, но как только я удаляю приложение из диспетчера задач, OverlayActivity не отображается.Я не уверен, на каком этапе он не работает, т. Е. Не работает ли служба или есть проблема с отображением активности.
Я пробовал много решений здесь, на StackOverflow, но не смог получитьвсе, что работает в моем случае.
Это код класса обслуживания:
public class OverlayService extends Service {
private static final String TAG = OverlayService.class.getSimpleName();
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
registerOverlayReceiver();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
unregisterOverlayReceiver();
super.onDestroy();
}
private void registerOverlayReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(ACTION_DEBUG);
registerReceiver(overlayReceiver, filter);
System.out.println("Service aa started");
}
private void unregisterOverlayReceiver() {
unregisterReceiver(overlayReceiver);
}
private static final String ACTION_DEBUG = "kunal.lockoverlay.action.DEBUG";
private BroadcastReceiver overlayReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "[onReceive]" + action);
if (action.equals(Intent.ACTION_SCREEN_ON)) {
// ACTON_SCREEN_ON
showOverlayActivity(context);
} else if (action.equals(ACTION_DEBUG)) {
showOverlayActivity(context);
}
}
};
private void showOverlayActivity(Context context) {
Intent intent = new Intent(context, OverlayActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
Я даже не уверен, возможно ли то, что я пытаюсь сделать, или нет.Если это вообще возможно, где я делаю неправильно.