Android 通过服务打开活动,即使应用程序已关闭
我正在开发一个应用程序,在该应用程序中,即使应用程序关闭,我也需要向用户显示一个活动,因为我使用的是Android 通过服务打开活动,即使应用程序已关闭,android,service,Android,Service,我正在开发一个应用程序,在该应用程序中,即使应用程序关闭,我也需要向用户显示一个活动,因为我使用的是服务,并且从该服务中,我打开了名为OverlayActivity.java的活动 当应用程序处于打开状态或存在于task manager中时,我会获得OverlayActivity,但当我从task manager中删除应用程序时,OverlayActivity不会显示。我不确定哪一步不起作用,即服务是否不起作用,或者显示活动时是否存在问题 我在StackOverflow上尝试了很多解决方案,但在
服务
,并且从该服务中,我打开了名为OverlayActivity.java的活动
当应用程序处于打开状态或存在于task manager中时,我会获得OverlayActivity,但当我从task manager中删除应用程序时,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);
}
}
我甚至不确定我想做的事情是否可能。如果有可能的话,我做错了
创建一个服务类并在onDestroy()中启动您的服务
我想这就是你问题的答案。您不能这样做,但您可以做的是向用户显示一个通知(假定服务仍在运行),该通知可能导致您所需的活动。为了让您的服务永远有效,请参见我通过提供Autostart权限解决了这个问题,没有Autostart权限,我的服务在从任务管理器关闭后无法启动。现在,即使在应用程序从任务管理器关闭后,我也能够成功启动该服务。您的广播是否有任何日志?请参阅此()帖子。@SyedHamzaHassan,不是Bolendra Singh,您尝试过此功能,但不起作用
@Override
public void onDestroy() {
//start service
super.onDestroy();
}